首页 > 代码库 > Unity3d 新建xml 读取xml
Unity3d 新建xml 读取xml
在游戏开发中,Xml经常被用来作为技能配置、地图配置、人物动作配置等配置文件。Unity3d内置的Xml库让我们很方便地就可以新建Xml和读取Xml。
下面是一个例子,新建了一个Xml文档,并且读取它。
[csharp] view plaincopy
- using UnityEngine;
- using System.Collections;
- using System.IO;
- using System.Xml;
- using System.Text;
- public class XmlTest : MonoBehaviour {
- XmlElement m_roleMotions = null;//人物动作;
- XmlElement m_skills = null;//人物技能;
- // Use this for initialization
- void Start () {
- //CreateXml();
- //ReadXml();
- ReadFileToXml();
- }
- // Update is called once per frame
- void Update () {
- }
- void CreateXml()
- {
- string filepath = Application.dataPath + "/Resources/1013000.xml";
- if (!File.Exists(filepath))
- {
- //创建xml实例;
- XmlDocument xmlDoc = new XmlDocument();
- //创建character;
- XmlElement root = xmlDoc.CreateElement("character");
- /***创建roleMotions Start***/
- XmlElement roleMotions = xmlDoc.CreateElement("roleMotions");
- XmlElement motionInfo = xmlDoc.CreateElement("motionInfo");
- XmlElement motion = xmlDoc.CreateElement("motion");
- motion.SetAttribute("clipName", "enter_ready");
- motion.SetAttribute("isLoop", "false");
- motion.SetAttribute("moveEndTime", "0");
- motion.SetAttribute("moveStartTime", "0");
- motionInfo.AppendChild(motion);
- roleMotions.AppendChild(motionInfo);
- root.AppendChild(roleMotions);
- /***创建roleMotions End***/
- /***创建skills Start***/
- XmlElement skills = xmlDoc.CreateElement("skills");
- XmlElement skill = xmlDoc.CreateElement("skill");
- skill.SetAttribute("name", "普攻");
- skill.SetAttribute("motion", "RMT_Attack1");
- skills.AppendChild(skill);
- root.AppendChild(skills);
- /***创建skills End***/
- xmlDoc.AppendChild(root);
- xmlDoc.Save(filepath);
- }
- else
- {
- Debug.LogError("File hava exist");
- }
- }
- void ReadXml()
- {
- string filepath = Application.dataPath + "/Resources/1013000.xml";
- if (!File.Exists(filepath))
- {
- Debug.LogError("xml file not exist");
- return;
- }
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.Load(filepath);
- //获取所有子节点;
- XmlNodeList nodeList = xmlDoc.SelectSingleNode("character").ChildNodes;
- foreach(XmlNode child in nodeList)
- {
- if (child.Name == "roleMotions")
- {
- m_roleMotions = child as XmlElement;
- }
- else if (child.Name == "skills")
- {
- m_skills = child as XmlElement;
- }
- }
- Debug.Log("m_roleMotions = " + m_roleMotions.InnerXml);
- Debug.Log("m_skills = " + m_skills.InnerXml);
- }
- void ReadFileToXml()
- {
- string filepath = "1013000";
- GameObject obj = Resources.Load(filepath) as GameObject;
- TextAsset xmlAsset = Resources.Load(filepath,typeof(TextAsset)) as TextAsset;
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(xmlAsset.text);
- //获取所有子节点;
- XmlNodeList nodeList = xmlDoc.SelectSingleNode("character").ChildNodes;
- foreach (XmlNode child in nodeList)
- {
- if (child.Name == "roleMotions")
- {
- m_roleMotions = child as XmlElement;
- }
- else if (child.Name == "skills")
- {
- m_skills = child as XmlElement;
- }
- }
- Debug.Log("m_roleMotions = " + m_roleMotions.InnerXml);
- Debug.Log("m_skills = " + m_skills.InnerXml);
- }
- }
新建的Xml文档内容如下:
[html] view plaincopy
- <character>
- <roleMotions>
- <motionInfo>
- <motion clipName="enter_ready" isLoop="false" moveEndTime="0" moveStartTime="0" />
- </motionInfo>
- </roleMotions>
- <skills>
- <skill name="普攻" motion="RMT_Attack1" />
- </skills>
- </character>
读取Xml结果:
Unity3d 新建xml 读取xml
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。