目录为:Assets/Scripts/ConfigReader/目录下
ReadIGuideTaskManagerConfig.cs
对应XML文件:
Assets/Resources/Config/UiTaskmanager.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<UiTaskmanager xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<info id="10001">
<sontaskid>1000;1002;1003</sontaskid>
<trigger>-5000</trigger>
<NextID>10002</NextID>
<istrigger>0</istrigger>
</info>
<info id="10002">
<sontaskid>1004</sontaskid>
<trigger>-5001</trigger>
<NextID>10003</NextID>
<istrigger>0</istrigger>
</info>
<info id="10003">
<sontaskid>1009</sontaskid>
<trigger>-5005</trigger>
<NextID>-1</NextID>
<istrigger>0</istrigger>
</info>
<info id="10004">
<sontaskid>1010</sontaskid>
<trigger>-5007</trigger>
<NextID>10008</NextID>
</info>
<info id="10008">
<sontaskid>8001;8002</sontaskid>
<trigger>-5006</trigger>
<NextID>10007</NextID>
<istrigger>0</istrigger>
</info>
<info id="10007">
<sontaskid>1008</sontaskid>
<trigger>-5004</trigger>
<NextID>10005</NextID>
<istrigger>0</istrigger>
</info>
<info id="10005">
<sontaskid>1005</sontaskid>
<trigger>-5002</trigger>
<NextID>10006</NextID>
<istrigger>0</istrigger>
</info>
<info id="10006">
<sontaskid>1006;1007</sontaskid>
<trigger>-5003</trigger>
<NextID>-1</NextID>
<istrigger>0</istrigger>
</info>
</UiTaskmanager>
ReadIGuideTaskManagerConfig.cs
using System;
using UnityEngine;
using System.Xml;
using System.Collections.Generic;
//IGuide Task Manager
//Assets/Resources/Config/UiTaskManager.xml
public class ReadIGuideTaskManagerConfig
{
XmlDocument xmlDoc = null;
//构造函数
public ReadIGuideTaskManagerConfig(string xmlFilePath)
{
ResourceUnit xmlfileUnit = ResourcesManager.Instance.loadImmediate (xmlFilePath, ResourceType.ASSET);
TextAsset xmlfile = xmlfileUnit.Asset as TextAsset;
if (!xmlfile)
{
Debug.LogError(" error infos: 没有找到指定的xml文件:" + xmlFilePath);
}
xmlDoc = new XmlDocument ();
xmlDoc.LoadXml (xmlfile.text);
XmlNodeList infoNodeList = xmlDoc.SelectSingleNode ("UiTaskmanager").ChildNodes;
for (int i = 0; i < infoNodeList.Count; i++)
{
if ((infoNodeList[i] as XmlElement).GetAttributeNode("id") == null)
{
continue;
}
string typeName = (infoNodeList [i] as XmlElement).GetAttributeNode ("id").InnerText;
IGuideManagerData managerInfo = new IGuideManagerData ();
managerInfo.TaskId = Convert.ToInt32 (typeName);
managerInfo.IsTriggerTask = false;
foreach (XmlElement xEle in infoNodeList[i].ChildNodes)
{
switch (xEle.Name)
{
case "sontaskid":
managerInfo.SonTaskList = GameMethod.ResolveToIntList (Convert.ToString (xEle.InnerText), ';');
break;
case "trigger":
managerInfo.TriggerInterface = Convert.ToInt32 (xEle.InnerText);
break;
case "NextID":
managerInfo.NextTaskId = GameMethod.ResolveToIntList (Convert.ToString (xEle.InnerText), ';');
break;
case "istrigger":
managerInfo.IsTriggerTask = (Convert.ToInt32 (xEle.InnerText) == 1) ? true : false;
break;
}
}
if (managerInfo.IsTriggerTask)
{
ConfigReader.iTriggerGuideManagerDataXmlInfoDict.Add(managerInfo.TaskId, managerInfo);
}
else
{
ConfigReader.iGuideManagerDataXmlInfoDict.Add (managerInfo.TaskId, managerInfo);
}
}
}
}
/*
对应XML格式:
<info id="10001">
<sontaskid>1000;1002;1003</sontaskid>
<trigger>-5000</trigger>
<NextID>10002</NextID>
<istrigger>0</istrigger>
</info>
*/
public class IGuideManagerData
{
public int TaskId;
public List<int> SonTaskList = new List<int>();
public int TriggerInterface;
public List<int> NextTaskId = new List<int>();
public bool IsTriggerTask = false;
}