通过XML文件实现人物之间的对话
来源:net 网络用户发布,如有版权联系网管删除 2018-07-12
一、建立一个XML文档,放在项目中Assert/Resources/XML文件下
XML的内容如下:
1 "1.0" encoding="utf-8"?> 2 34 5 8门派长老 6李清,你找我意欲何事? 79 12李清 10回禀长老,弟子最近想出城历练一番,望长老允 1113 16门派长老 14城外老虎数量不断增多,已经威胁到了人们的出行 1517 20李清 18弟子愿去赶走虎群 1921 24门派长老 22这里是500金币,你去准备一些随身物品,明天出发 2325 28李清 26弟子明白 27
二、新建一个C#脚本,读取文件
脚本主要代码如下:
1、加载XML文件,将文件的数据存入到LIst集合中去
1 public static List<string> ListXml;//定义一个string类型的List集合1 public static int listIndex = 0;
1 public static string role;//角色名字2 public static string role_detail;//角色的对话
4 public static void LoadXML(string name) 5 { 6 ListXml = new List<string>(); 7 XmlDocument xmlDocument = new XmlDocument();//定义一个XmlDocument 8 string data = Resources.Load(@"XML"+name).ToString();//Resources加载XML文档 9 xmlDocument.LoadXml(data);10 //SelectSingleNode(name).ChildNodes 查询该文档下的所有子集,返回一个集合11 XmlNodeList xmlNodeList = xmlDocument.SelectSingleNode(name).ChildNodes;12 //遍历集合,给每个子集(每条对话)增加一个分割标识符“:”,方便下面字符串的分割13 foreach (var xmlNode in xmlNodeList)14 {15 XmlElement xmlElement = (XmlElement)xmlNode; 16 ListXml.Add(xmlElement.ChildNodes.Item(0).InnerText+":"+ xmlElement.ChildNodes.Item(1).InnerText); 17 } 18 }
2、分割集合中的子集(每条对话),根据每个子集的角色名字(role),显示出所对应的UI
1 //分割每个子集(每条对话) 2 public static void ListDiv(List<string> rolelist,int index) 3 { 4 5 string[] role_array = rolelist[index].Split(':');//将每条对话从设置好的标识符“:”分割 6 role = role_array[0];//角色名字 7 role_detail = role_array[1];//角色对话 8 Debug.Log(role +":"+ role_detail); 9 string text = role + ":" + role_detail;10 //根据上面分割的role(角色名字),显示所对应的对话框11 switch (role)12 {13 case "李清":14 //显示UI界面15 //text值传过去16 //我这里用的是UI框架 和 一个text的全局变量来控制的17 TTUIPage.ShowPage();18 Global_Variable.Liqin_text.text = text.ToString();19 break;20 case "门派长老":21 TTUIPage.ShowPage ();22 Global_Variable.Dean_text.text = text.ToString();23 break;24 }25 }
3、加载XML文件,读取对话
1 private void Start() 2 { 3 //调用LoadXML方法 4 LoadXML("dialogues1"); 5 } 6 private void Update() 7 { 8 if (Input.GetMouseButtonDown(0)) 9 {10 //通过集合的长度,判断对话是否全部读取完毕11 if (listIndex >= ListXml.Count - 1)12 {13 //对话读取完毕14 }15 else16 {17 //读取行下一条对话18 listIndex++;19 //调用ListDiv方法继续加载对话20 ListDiv(ListXml, listIndex);21 }22 } 23 }
查看评论 回复
"通过XML文件实现人物之间的对话"的相关文章
- 上一篇:UE4添加植被FoliageType
- 下一篇:在Unity中对Lua进行调试