ConfigReader(二十九)—— ReadHeroHeadConfig

本文介绍了一个用于Unity3D游戏开发中英雄头像配置读取的类ReadHeroHeadConfig。该类通过解析XML文件来加载英雄头像的相关信息,如头像名称、类型、图集等,并将这些信息存储到一个字典中以便于游戏内调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

英雄头像信息

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<HeadSelect xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <info HeadID="1">
        <Head_Name>精灵男</Head_Name>
        <Head_Type>1</Head_Type>
        <Atlas>TeamHead2</Atlas>
        <Atlas_Num>16</Atlas_Num>
        <Used_Condition>0</Used_Condition>
        <Account_Level>1</Account_Level>
    </info>
    <info HeadID="2">
        <Head_Name>精灵女</Head_Name>
        <Head_Type>2</Head_Type>
        <Atlas>TeamHead2</Atlas>
        <Atlas_Num>17</Atlas_Num>
        <Used_Condition>0</Used_Condition>
        <Account_Level>1</Account_Level>
    </info>
    <info HeadID="3">
        <Head_Name>智子</Head_Name>
        <Head_Type>2</Head_Type>
        <Atlas>TeamHead2</Atlas>
        <Atlas_Num>32</Atlas_Num>
        <Used_Condition>0</Used_Condition>
        <Account_Level>1</Account_Level>
    </info>

ReadHeroHeadConfig.cs

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

// 英雄头像
//对应配置文件:Assets/Resources/Config/HeadSelect.xml
public class ReadHeroHeadConfig
{
    XmlDocument xmlDoc = null;

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

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

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

            HeadSelectConfigInfo headSelectInfo = new HeadSelectConfigInfo ();
            headSelectInfo.HeroHeadID = Convert.ToInt32 (typeName);

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

                case "Head_Type":
                    headSelectInfo.HeroHeadType = GameMethod.ResolveToIntList (xEle.InnerText);
                    break;

                case "Atlas":
                    headSelectInfo.HeroHeadAtlas = Convert.ToString (xEle.InnerText);
                    break;

                case "Atlas_Num":
                    headSelectInfo.HeroHeadAtlas_Num = xEle.InnerText;
                    break;

                case "Used_Condition":
                    headSelectInfo.HeroUsedCondition = Convert.ToInt32 (xEle.InnerText);
                    break;

                case "Account_Level":
                    headSelectInfo.HeroUsedLevel = Convert.ToInt32 (xEle.InnerText);
                    break;
                }
            }

            ConfigReader.headSelectXmlInfoDict.Add (headSelectInfo.HeroHeadID, headSelectInfo);
        }
    }
}

/*
XML格式:
<info HeadID="5">
    <Head_Name>冻法师</Head_Name>
    <Head_Type>1,2</Head_Type>
    <Atlas>TeamHead2</Atlas>
    <Atlas_Num>7</Atlas_Num>
    <Used_Condition>0</Used_Condition>
    <Account_Level>1</Account_Level>
</info>
*/
public class HeadSelectConfigInfo: System.Object
{
    #region 英雄头像信息
    public string HeroHeadName; //英雄名

    public int HeroUsedLevel;
    public int HeroUsedCondition;   //英雄使用条件(等级)
    public int HeroHeadID;  //英雄头像编号
    public string HeroHeadAtlas;    //英雄头像所在图集
    public string HeroHeadAtlas_Num;    //英雄头像所在图集序号
    public List<int> HeroHeadType;  //英雄头像类型(性别)
    #endregion
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值