ConfigReader(三十一)—— ReadIGuideTaskConfig

来源:互联网 发布:美萍软件怎么样 编辑:程序博客网 时间:2024/06/05 01:16

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

对应XML文件:
Assets/Resources/Config/UiTaskEvent.xml
部分如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><UiTaskEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">    <info id="1000">        <startEvent>-8000</startEvent>        <endEvent>-1000</endEvent>        <textpath>Center/character</textpath>        <textpos>240;240;0</textpos>        <content>请输入您的账号昵称</content>        <isshield>1</isshield>    </info>    <info id="1001">        <startEvent>-8001</startEvent>        <endEvent>-1001</endEvent>        <textpath>Center/character</textpath>        <textpos>0;-186;0</textpos>        <content>请选择您的角色性别</content>        <isshield>1</isshield>    </info>    <info id="1002">        <startEvent>-8002</startEvent>        <endEvent>-1002</endEvent>        <textpath>Center/character</textpath>        <textpos>315;30;0</textpos>        <content>请选择您的角色头像</content>        <isshield>1</isshield>    </info>    <info id="1003">        <startEvent>-8003</startEvent>        <endEvent>-1003</endEvent>        <textpath>Center/character</textpath>        <textpos>270;-235;0</textpos>        <content>点击确定完成注册</content>        <isshield>1</isshield>    </info>

ReadIGuideTaskConfig.cs

using System;using UnityEngine;using System.Xml;using System.Collections.Generic;//跟UI有关//对应配置文件:Assets/Resources/Config/UiTaskEventpublic class ReadIGuideTaskConfig{    XmlDocument xmlDoc = null;    //构造函数    public ReadIGuideTaskConfig(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 ("UiTaskEvent").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;            IGuideData taskInfo = new IGuideData ();            taskInfo.TaskId = Convert.ToInt32 (typeName);            foreach (XmlElement xEle in infoNodeList[i].ChildNodes)            {                switch (xEle.Name)                {                case "startEvent":                    taskInfo.StartTaskEvent = Convert.ToInt32 (xEle.InnerText);                    break;                case "endEvent":                    taskInfo.EndTaskEvent = Convert.ToInt32 (xEle.InnerText);                    break;                case "textpath":                    taskInfo.TextPath = Convert.ToString (xEle.InnerText);                    break;                case "textpos":                    taskInfo.TextPos = GameMethod.ResolveToVector3 (Convert.ToString (xEle.InnerText), ';');                    break;                case "content":                    taskInfo.TextContent = GameMethod.ResolveToStrList (Convert.ToString (xEle.InnerText), ';');                    break;                case "shakepath":                    taskInfo.ShakePath = Convert.ToString (xEle.InnerText);                    break;                case "shakepos":                    taskInfo.ShakePos = GameMethod.ResolveToVector3 (Convert.ToString (xEle.InnerText), ';');                    break;                case "flashpath":                    taskInfo.FlashPath = Convert.ToString (xEle.InnerText);                    break;                case "flashpos":                    taskInfo.FlashPos = GameMethod.ResolveToVector3 (Convert.ToString (xEle.InnerText), ';');                    break;                case "destpos":                    taskInfo.FlashDstPos = GameMethod.ResolveToVector3 (Convert.ToString (xEle.InnerText), ';');                    break;                case "isshield":                    taskInfo.IsMask = (Convert.ToInt32 (xEle.InnerText) == 1) ? true : false;                    break;                }            }            ConfigReader.iGuideDataXmlInfoDict.Add (taskInfo.TaskId, taskInfo);        }    }}/*<info id="1004">    <startEvent>-8004</startEvent>    <endEvent>-1004</endEvent>    <textpath>Center/character</textpath>    <textpos>-16;-240;0</textpos>    <content>附近有个敌方基地,咱们找它练练手!</content>    <isshield>1</isshield></info>*/public class IGuideData{    public int TaskId;    public int StartTaskEvent;    public int EndTaskEvent;    public string TextPath;    public Vector3 TextPos;    public List<string> TextContent = new List<string> ();    public string ShakePath;    public Vector3 ShakePos;    public string FlashPath;    public Vector3 FlashPos;    public Vector3 FlashDstPos;    public bool IsMask;}
原创粉丝点击