加载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>