unity 通过xml外部加载视频链接,图片

加载xml的代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using System.Xml;
using FrameWork;
using UnityEngine.UI;

public class WebGl_LoadXml : FrameworkComponent
{
    public string path= "ExternData/ExtralLoad/videoxml.xml";
    protected override void Awake()
    {
        base.Awake();
        StartLoadURL(path);
    }
    public override void Init()
    {

    }
    #region 对外接口
    /// <summary>
    /// 获得外部网页的视频链接
    /// </summary>
    /// <param name="ID">需要视频的对应ID</param>
    /// <param name="needURl">外部加载的视频链接</param>
    /// <returns>是否加载成功</returns>
    public bool GetUrl(byte ID, out string needURl)
    {
        if (isFinished)
        {
            needURl = AnalysisXml(text, ID);
            return true;
        }
        else
        {
            StartLoadURL(path);

            Debug.Log("未加载存放视频的xml");

            needURl = null;

            return false;
        }
    }
    private string needURl;
    /// <summary>
    /// 未加载视频xml,需要先加载xml,再调用对应的事件
    /// </summary>
    /// <param name="ID">需要视频的对应ID</param>
    /// <param name="unityAction">未加载xml,传递需要的视频链接</param>
    public void GetUrl(byte ID, UnityAction<string> unityAction)
    {
        if (isFinished)
        {
            needURl = AnalysisXml(text, ID);
            unityAction(needURl);
        }
        else
        {
            StartLoadURL(path, unityAction);

        }
    }

    public void GetImage(string url, UnityAction<Texture> callBack)
    {
        StartLoadImage(url, callBack);
    }
    #endregion

    #region 加载单个外部视频链接

    private string text;
    private bool isFinished = false;
    private byte ID;
    /// <summary>
    /// 加载存放视频的xml
    /// </summary>
    /// <param name="url">相对路劲</param>
    public void StartLoadURL(string url, UnityAction<string> callBack = null)
    {
        if (Application.isEditor)
        {
            url = "file:///" + Application.dataPath + "/" + url;
        }
        else
        {
            url = Application.dataPath + "/" + url;
        }
        StartCoroutine(WaitText(url, callBack));
    }

    public IEnumerator WaitText(string url, UnityAction<string> callBack)
    {
        isFinished = false;
        yield return StartCoroutine(LoadText(url));
        isFinished = true;

        if (callBack != null)
        {
            callBack(AnalysisXml(this.text, this.ID));
        }
    }
    private IEnumerator LoadText(string url)
    {
        WWW www = new WWW(url);

        yield return www;

        this.text = www.text;
    }
    private string AnalysisXml(string text, byte ID)
    {

        XmlDocument doc = new XmlDocument();
        doc.LoadXml(text);
        XmlNode xmlNode = doc.SelectSingleNode("root");
        for (int i = 0; i < xmlNode.ChildNodes.Count; i++)
        {
            if (xmlNode.ChildNodes[i].Attributes["ID"].InnerText == ID.ToString())
            {
                Debug.Log("打开视频链接" + xmlNode.ChildNodes[i].InnerText);
                return xmlNode.ChildNodes[i].InnerText;
            }
        }
        Debug.Log("空连接");
        return null;
    }
    #endregion

    #region 加载外部图片

    private Texture image;
    /// <summary>
    /// 加载存放视频的xml
    /// </summary>
    /// <param name="url">相对路劲</param>
    public void StartLoadImage(string url, UnityAction<Texture> callBack)
    {
        if (Application.isEditor)
        {
            url = "file:///" + Application.dataPath + "/" + url;
        }
        else
        {
            url = Application.dataPath + "/" + url;
        }
        StartCoroutine(WaitImage(url, callBack));
    }

    public IEnumerator WaitImage(string url, UnityAction<Texture> callBack)
    {
        yield return StartCoroutine(LoadImage(url, callBack));
    }
    private IEnumerator LoadImage(string url, UnityAction<Texture> callBack)
    {
        WWW www = new WWW(url);

        yield return www;

        this.image = www.texture;
        if (callBack != null) callBack(www.texture);
    }


    #endregion

}

xml中的写法

<?xml version="1.0" encoding="utf-8"?>
<root>
  <URL ID="0"  introduce="第一个视频教学的视频链接">http://www.baidu.com</URL>
  <URL ID="1"  introduce="第二个视频教学的视频链接">http://www.baidu.com</URL>
  <URL ID="2"  introduce="第三个视频教学的视频链接">http://www.baidu.com</URL>
  <URL ID="3"  introduce="第四个视频教学的视频链接">http://www.baidu.com</URL>
  <URL ID="4"  introduce="第五个视频教学的视频链接">http://www.baidu.com</URL>
</root>

猜你喜欢

转载自blog.csdn.net/wxxqhf/article/details/85046804
今日推荐