ConfigReader(四)—— ReadBuffConfig

来源:互联网 发布:博雅立方 知乎 编辑:程序博客网 时间:2024/05/29 02:35
目录为:Assets/Scripts/ConfigReader/目录下ReadBuffConfig.cs这里读取的配置文件是技能buff相关的。

先来看看配置文件,配置文件在编辑器内的目录为:
Assets/Resources/Config/SkillCfg_buff.xml
因为太长了就只截取两段吧。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><SkillCfg_buff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">    <info un32ID="169999">        <szName>隐身测试</szName>        <n32UseMP>0</n32UseMP>        <n32UseHP>0</n32UseHP>        <n32UseCP>0</n32UseCP>        <bIsCoolDown>1</bIsCoolDown>        <n32TriggerRate>1000</n32TriggerRate>        <bIfAffectBuilding>0</bIfAffectBuilding>        <bIfAffectHero>1</bIfAffectHero>        <bIfAffectMonster>0</bIfAffectMonster>        <eBuffType>1</eBuffType>        <eBuffTarget>2</eBuffTarget>        <eTargetType>1</eTargetType>        <eEffect0LastTick>10000</eEffect0LastTick>        <eEffect0EffectInterval>0</eEffect0EffectInterval>        <n32ReplaceType>2</n32ReplaceType>        <n32RepeatTimes>1</n32RepeatTimes>        <n32RejectID>0</n32RejectID>        <n32ReplaceID>0</n32ReplaceID>        <bEffect0ClearWhenDie>1</bEffect0ClearWhenDie>        <szEffectIcon>0</szEffectIcon>        <szEffectSound>0</szEffectSound>        <szEffectDes>0</szEffectDes>        <szEffection>yinshen</szEffection>        <n32EffectID>27</n32EffectID>        <eEffectValue>1</eEffectValue>        <eEffectRate>0</eEffectRate>        <eFlyEffectID>0</eFlyEffectID>        <StartEventID>0</StartEventID>        <IntervalEventID>0</IntervalEventID>        <EndEventID>0</EndEventID>    </info>    <info un32ID="169998">        <szName>隐身测试-被动</szName>        <n32UseMP>0</n32UseMP>        <n32UseHP>0</n32UseHP>        <n32UseCP>0</n32UseCP>        <bIsCoolDown>0</bIsCoolDown>        <n32TriggerRate>1000</n32TriggerRate>        <bIfAffectBuilding>0</bIfAffectBuilding>        <bIfAffectHero>1</bIfAffectHero>        <bIfAffectMonster>0</bIfAffectMonster>        <eBuffType>1</eBuffType>        <eBuffTarget>2</eBuffTarget>        <eTargetType>1</eTargetType>        <eEffect0LastTick>10000</eEffect0LastTick>        <eEffect0EffectInterval>0</eEffect0EffectInterval>        <n32ReplaceType>2</n32ReplaceType>        <n32RepeatTimes>1</n32RepeatTimes>        <n32RejectID>0</n32RejectID>        <n32ReplaceID>0</n32ReplaceID>        <bEffect0ClearWhenDie>1</bEffect0ClearWhenDie>        <szEffectIcon>0</szEffectIcon>        <szEffectSound>0</szEffectSound>        <szEffectDes>0</szEffectDes>        <szEffection>0</szEffection>        <n32EffectID>26</n32EffectID>        <eEffectValue>11399901</eEffectValue>        <eEffectRate>0</eEffectRate>        <eFlyEffectID>0</eFlyEffectID>        <StartEventID>0</StartEventID>        <IntervalEventID>0</IntervalEventID>        <EndEventID>0</EndEventID>    </info>    <info/>

然后是ReadBuffConfig.cs

using System;using UnityEngine;using System.Xml;using System.Collections.Generic;//这个类读的配置文件是跟技能buff相关的,但是这里只读取了一部分//这个类要读的文件在编辑器内的路径为:Assets/Resources/Config/SkillCfg_buffpublic class ReadBuffConfig{    XmlDocument xmlDoc = null;    //构造函数    public ReadBuffConfig()    {    }    //构造函数    public ReadBuffConfig(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 ();        //Load XML        xmlDoc.LoadXml (xmlfile.text);        XmlNodeList infoNodeList = xmlDoc.SelectSingleNode ("SkillCfg_buff").ChildNodes;        for (int i = 0; i < infoNodeList.Count; i++)        {            //(XmlNode xNode in infoNodeList)            if ((infoNodeList[i] as XmlElement).GetAttributeNode("un32ID") == null)            {                continue;            }            string typeName = (infoNodeList [i] as XmlElement).GetAttributeNode ("un32ID").InnerText;            BuffConfigInfo buffInfo = new BuffConfigInfo ();            buffInfo.BuffID = Convert.ToUInt32 (typeName);            foreach (XmlElement xEle in infoNodeList[i].ChildNodes)            {                #region 搜索                switch (xEle.Name)                {                case "szName":                    buffInfo.BUffName = Convert.ToString(xEle.InnerText);                    break;                case "szEffectIcon":                    buffInfo.IconRes = Convert.ToString(xEle.InnerText);                    break;                case "n32EffectID":                    buffInfo.effectID = Convert.ToInt32(xEle.InnerText);                    break;                case "szEffection":                    buffInfo.EffectRes = Convert.ToString(xEle.InnerText);                    break;                case "eEffect0LastTick":                    buffInfo.TotalTime = Convert.ToInt32(xEle.InnerText) / 1000.0f;                    break;                case "szEffectSound":                    buffInfo.sound = Convert.ToString(xEle.InnerText);                    break;                case "eFlyEffectID":                    buffInfo.eFlyEffectID = Convert.ToInt32(xEle.InnerText);                    break;                }                #endregion            }            ConfigReader.buffXmlInfoDict.Add (buffInfo.BuffID, buffInfo);        }    }}/*这是这个xml文件的结构<info un32ID="169999">    <szName>隐身测试</szName>    <n32UseMP>0</n32UseMP>    <n32UseHP>0</n32UseHP>    <n32UseCP>0</n32UseCP>    <bIsCoolDown>1</bIsCoolDown>    <n32TriggerRate>1000</n32TriggerRate>    <bIfAffectBuilding>0</bIfAffectBuilding>    <bIfAffectHero>1</bIfAffectHero>    <bIfAffectMonster>0</bIfAffectMonster>    <eBuffType>1</eBuffType>    <eBuffTarget>2</eBuffTarget>    <eTargetType>1</eTargetType>    <eEffect0LastTick>10000</eEffect0LastTick>    <eEffect0EffectInterval>0</eEffect0EffectInterval>    <n32ReplaceType>2</n32ReplaceType>    <n32RepeatTimes>1</n32RepeatTimes>    <n32RejectID>0</n32RejectID>    <n32ReplaceID>0</n32ReplaceID>    <bEffect0ClearWhenDie>1</bEffect0ClearWhenDie>    <szEffectIcon>0</szEffectIcon>    <szEffectSound>0</szEffectSound>    <szEffectDes>0</szEffectDes>    <szEffection>yinshen</szEffection>    <n32EffectID>27</n32EffectID>    <eEffectValue>1</eEffectValue>    <eEffectRate>0</eEffectRate>    <eFlyEffectID>0</eFlyEffectID>    <StartEventID>0</StartEventID>    <IntervalEventID>0</IntervalEventID>    <EndEventID>0</EndEventID></info>*///看来这里只读取一部分public class BuffConfigInfo: System.Object{    public uint BuffID;    public string BUffName;    public string IconRes;    public string EffectRes;    public int effectID;    public float TotalTime;    public string sound;    public int eFlyEffectID;        //buff后续击飞效果id}
原创粉丝点击