ConfigReader(三十二)—— ReadIGuideTaskManagerConfig

来源:互联网 发布:windows lua 环境变量 编辑:程序博客网 时间:2024/05/21 09:31

目录为: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.xmlpublic 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;}
阅读全文
0 0