ConfigReader(二十)—— ReadGuidePathTaskConfig

来源:互联网 发布:网络教育专升本院校 编辑:程序博客网 时间:2024/05/21 15:47

目录为:Assets/Scripts/ConfigReader/目录下
ReadGuidePathTaskConfig.cs

对应的配置文件:
Assets/Resources/Config/path.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><path xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">    <info id="1001">        <point>59,61,109</point>        <dis>6</dis>    </info>    <info id="1002">        <point>65,61,114</point>        <dis>6</dis>    </info>    <info id="1003">        <point>94,61,123</point>        <dis>6</dis>    </info>    <info id="1004">        <point>82,61,109</point>        <dis>4</dis>    </info></path>

ReadGuidePathTaskConfig.cs

using System;using UnityEngine;using System.Xml;using System.Collections.Generic;//Guide相关//对应的配置文件:Assets/Resources/Config/path.xmlpublic class ReadGuidePathTaskConfig{    XmlDocument xmlDoc = null;    //构造函数    public ReadGuidePathTaskConfig(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 ("path").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;            GuidePathInfo info = new GuidePathInfo ();            info.mTaskId = Convert.ToInt32 (typeName);            foreach (XmlElement xEle in infoNodeList[i].ChildNodes)            {                switch (xEle.Name)                {                case "point":                    info.mDesPos = GameMethod.ResolveToVector3 (Convert.ToString (xEle.InnerText));                    break;                case "dis":                    info.mDistance = Convert.ToSingle (xEle.InnerText);                    break;                }            }            ConfigReader.guidePathInfoDict.Add (info.mTaskId, info);        }    }}/*XML格式:<info id="1001">    <point>59,61,109</point>    <dis>6</dis></info>*/public class GuidePathInfo{    public int mTaskId;    public Vector3 mDesPos;    public float mDistance;}
原创粉丝点击