天天看点

ConfigReader(四十五)—— ReadSelectHeroConfig

目录为:Assets/Scripts/ConfigReader/目录下

ReadSelectHeroConfig.cs

这个文件储存 英雄选择时各个英雄的信息

对应的配置文件:

Assets/Resources/Config/HeroChooseCfg.xml

部分如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<herochoose xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <info number="19999">
        <name_ID>Jinglingnan_6</name_ID>
        <name_ch>破灭之剑</name_ch>
        <pic_thumb>16</pic_thumb>
        <hero_des>[00b6fc]弧月斩:[-]以自身为圆心挥舞长剑,对范围内的敌方单位造成伤害并眩晕</hero_des>
        <hero_des2>[00b6fc]裂地斩:[-]向前方举剑劈斩,打击直线上的敌方单位,造成伤害和减速</hero_des2>
        <hero_desPassitive>[00b6fc]会心一击:[-]提升自身普通攻击的暴击几率</hero_desPassitive>
        <buy_des>[da841f]米娜!拥有你,我就拥有了一切!——柯尔德恩[-]
    柯尔德恩,精灵公主米娜的一名护卫,也是公主青梅竹马的好朋友,两人其实早已互生爱慕之心。
    在米娜前往圣光学院学习时,柯尔也同样守护在她身旁,并与学院的长老魔导师智子成为了朋友,三人在圣光学院中度过了非常快乐的一段时光。
    当智子前往研究那块神秘的水晶之后不久,一切都不一样了,柯尔接到命令后便立即将公主护送回了生命之岛,之后便和精灵大军一起前往联盟驻地开始了漫长的战争。直到战争结束,柯尔鼓起勇气向精灵王提亲,却遭到拒绝,米娜公主知道柯尔提亲遭拒后,万分难过,最后要求柯尔带着自己逃出生命之岛,面对心爱的女人,柯尔终于下定了决心。
    逃入混乱之源后,柯尔遇见了许多联盟中的战友知晓了他们的任务,与米娜商量后决定留在混乱之源,为大陆贡献自己的一份力量。
</buy_des>
        <bac_des>[0078ff]破灭之剑·柯尔德恩[-]
[da841f]近战/战士[-]
[2dda1f]物攻[-] [b68500]★★★★[-]
[2dda1f]魔攻[-] [b68500]★[-]
[2dda1f]防御[-] [b68500]★★[-]
[2dda1f]射程[-] [b68500]★[-]
    作为一名皇家护卫,柯尔德恩拥有着强大的实力,锋利的巨剑带着可怕的杀伤力,并且还有附带的眩晕、减速,让敌人几乎不敢与他近身作战。
</bac_des>
        <pic_icon>16</pic_icon>
        <sound_select>Jinglingnan_5_line_01</sound_select>
        <skill_icon1>03</skill_icon1>
        <skill_icon2>04</skill_icon2>
        <skill_iconPassitive>69</skill_iconPassitive>
        <newsguidehero>1</newsguidehero>
    </info>
    <info number="10001">
        <name_ID>Nvyao_5</name_ID>
        <name_ch>飞樱漫舞</name_ch>
        <pic_thumb>32</pic_thumb>
        <hero_des>[00b6fc]樱花之风:[-]智子释放出一道夹杂着樱花的劲风,被吹拂过的敌人将陷入沉默中</hero_des>
        <hero_des2>[00b6fc]飞樱漫舞:[-]智子在漫天的樱花中载歌载舞,让附近的敌人沉浸其中无法攻击</hero_des2>
        <hero_desPassitive>[00b6fc]樱花坠:[-]每4次普通攻击会触发一次樱花坠效果,缠绕住敌方单位</hero_desPassitive>
        <buy_des>[da841f]只有即将死亡的人,才能看见我的舞姿!你想看吗? ——智子[-]
    智子,樱花家族中的天才人物,在她18岁时便以自己纯熟精湛的魔法操控能力,强大的元素亲和力,晋升为了大陆最年轻的魔导师,一举震惊了整个圣克里德帝国。
    此后一直担任帝国中最大的一所学院——圣光学院的长老。在学院中研读了许多古老的魔法书籍,学识相当渊博。同时,精灵公主米娜也在学院中学习,两人虽然一个是学生,一个是长老,但却丝毫不影响她们成为朋友。直到智子被邀请参与研究水晶之后,两人便没有再见过面了,再后来,整个大陆逐渐陷入了战火之中,米娜也被护送回了生命之岛……两人之后再次见面是在混乱之源,然而却已经那么陌生,陌生到已经是彼此的敌人。</buy_des>
        <bac_des>[0078ff]飞樱漫舞·智子[-]
[da841f]远程/魔法[-]
[2dda1f]物攻[-] [b68500]★[-]
[2dda1f]魔攻[-] [b68500]★★★★[-]
[2dda1f]防御[-] [b68500]★[-]
[2dda1f]射程[-] [b68500]★★★★[-]
    远程魔法英雄,拥有相当不俗的输出能力,技能中附带的沉默和缴械更是让敌人毫无还手之力,是敌人噩梦般的存在!</bac_des>
        <pic_icon>32</pic_icon>
        <sound_select>Nvyao_5_line_01</sound_select>
        <skill_icon1>02</skill_icon1>
        <skill_icon2>01</skill_icon2>
        <skill_iconPassitive>68</skill_iconPassitive>
    </info>
           

ReadSelectHeroConfig.cs

using System;
using UnityEngine;
using System.Xml;
using System.Collections.Generic;

//看来这个文件储存 英雄选择时各个英雄的信息
//对应的配置文件:Assets/Resources/Config/HeroChooseCfg.xml
//这个对应的配置文件也很大
public class ReadSelectHeroConfig
{
    XmlDocument xmlDoc = null;

    //构造函数
    public ReadSelectHeroConfig(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 ("herochoose").ChildNodes;

        for (int i = ; i < infoNodeList.Count; i++)
        {
            if ((infoNodeList[i] as XmlElement).GetAttributeNode("number") == null)
            {
                continue;
            }

            string typeName = (infoNodeList [i] as XmlElement).GetAttributeNode ("number").InnerText;

            HeroSelectConfigInfo heroSelectInfo = new HeroSelectConfigInfo ();
            heroSelectInfo.HeroSelectNum = Convert.ToInt32 (typeName);

            foreach (XmlElement xEle in infoNodeList[i].ChildNodes)
            {
                switch (xEle.Name)
                {
                case "name_ID":
                    heroSelectInfo.HeroSelectName = Convert.ToString (xEle.InnerText);
                    break;

                case "name_ch":
                    heroSelectInfo.HeroSelectNameCh = Convert.ToString (xEle.InnerText);
                    break;

                case "pic_thumb":
                    heroSelectInfo.HeroSelectThumb = Convert.ToString (xEle.InnerText);
                    break;

                case "un8costtype":
                    heroSelectInfo.HeroSelectCostType = Convert.ToInt32 (xEle.InnerText);
                    break;

                case "n32cost":
                    heroSelectInfo.HeroSelectCost = Convert.ToSingle (xEle.InnerText);
                    break;

                case "hero_des":
                    heroSelectInfo.HeroSelectDes = Convert.ToString (xEle.InnerText);
                    break;

                case "hero_des2":
                    heroSelectInfo.HeroSelectDes2 = Convert.ToString (xEle.InnerText);
                    break;

                case "buy_des":
                    heroSelectInfo.HeroSelectDesSkill = Convert.ToString (xEle.InnerText);
                    break;

                case "pic_icon":
                    heroSelectInfo.HeroSelectHead = Convert.ToInt32 (xEle.InnerText);
                    break;

                case "sound_select":
                    heroSelectInfo.HeroSelectSound = Convert.ToString (xEle.InnerText);
                    break;

                case "skill_icon1":
                    heroSelectInfo.HeroSelectSkill1 = Convert.ToString (xEle.InnerText);
                    break;

                case "skill_icon2":
                    heroSelectInfo.HeroSelectSkill2 = Convert.ToString (xEle.InnerText);
                    break;

                case "newsguidehero":
                    heroSelectInfo.IsGuideHero = Convert.ToInt32 (xEle.InnerText);
                    break;

                case "hero_desPassitive":
                    heroSelectInfo.HeroPassDes = Convert.ToString (xEle.InnerText);
                    break;

                case "skill_iconPassitive":
                    heroSelectInfo.HeroSkillPass = Convert.ToString (xEle.InnerText);

                case "bac_des":
                    heroSelectInfo.HeroSelectBuyDes = Convert.ToString (xEle.InnerText);
                    break;
                }
            }

            ConfigReader.heroSelectXmlInfoDict.Add (heroSelectInfo.HeroSelectNum, heroSelectInfo);
        }
    }
}

/*
XML格式:
<info number="10015">
        <name_ID>Chengjiezhe_5</name_ID>
        <name_ch>惩戒者</name_ch>
        <pic_thumb>39</pic_thumb>
        <hero_des>[00b6fc]魔法能量:[-]释放能量球,对目标造成伤害,并燃烧一定魔法值</hero_des>
        <hero_des2>[00b6fc]惩戒:[-]使目标受到持续伤害并缴械,若此时目标施放技能,缴械效果将被沉默取代</hero_des2>
        <hero_desPassitive>[00b6fc]魔法护盾:[-]提升自身的魔法防御力</hero_desPassitive>
        <buy_des>[da841f]无论是谁,犯了错都会付出代价,哪怕是神也不例外!——摩恩纳兹[-]
    摩恩纳兹曾是神的宠物,在最初的“诸神的黄昏”那一战中,最后的神——奥斯也陨落了,而他的宠物摩恩纳兹却幸运的躲进了“卡多雷之谧”。
    然而“卡多雷之谧”却碎裂了,碎裂的石头散落在了世界的各个地方,躲藏其中的摩恩纳兹随着“卡多雷之谧”的碎裂,力量也被分散在了各个碎片之中。
    当摩恩纳兹在某个碎片中的力量苏醒时,他发现自己来到了一个陌生的大陆——帕拉索斯大陆,而那漫山遍野的恶魔和亡灵让他意识到,这里的生物犯了致命的错误,他们使用了错误的方法来激发“卡多雷之谧”的力量,那些无知的生物们也将为自己愚蠢的行为而付出代价。
    不过这些都不重要了,重要的是摩恩纳兹已经没有了神的束缚!</buy_des>
        <bac_des>[0078ff]惩戒者·摩恩纳兹[-]
[da841f]远程/魔法[-]
[2dda1f]物攻[-] [b68500]★[-]
[2dda1f]魔攻[-] [b68500]★★★★[-]
[2dda1f]防御[-] [b68500]★★★[-]
[2dda1f]射程[-] [b68500]★[-]
    脱离束缚的摩恩纳兹,只要出现在战场就会让敌人为之忌惮,敌人在摩恩纳兹的面前已经无力抵抗,除了逃跑他们别无出路。</bac_des>
        <pic_icon>39</pic_icon>
        <sound_select>Emo_line_01</sound_select>
        <skill_icon1>31</skill_icon1>
        <skill_icon2>30</skill_icon2>
        <skill_iconPassitive>81</skill_iconPassitive>
    </info>
*/
public class HeroSelectConfigInfo: System.Object
{
    #region 道具信息
    public int HeroSelectNum;
    public string HeroSelectName;
    public string HeroSelectNameCh;
    public string HeroSelectThumb;
    public int HeroSelectCostType;
    public float HeroSelectCost;
    public string HeroSelectDes;
    public string HeroSelectDes2;
    public string HeroSelectBuyDes;
    public int HeroSelectHead;
    public string HeroSelectSound;
    public string HeroSelectSkill1;
    public string HeroSelectSkill2;
    public int IsGuideHero;
    public string HeroPassDes;
    public string HeroSkillPath;
    public string HeroSelectDesSkill;
    #endregion
}