ConfigReader(二十七)—— ReadHeroBuyConfig

本文介绍了一个用于游戏英雄购买配置读取的C#类ReadHeroBuyConfig。该类从XML文件中加载并解析英雄购买相关信息,如英雄名称、类型、价格等,并将其存储为HeroBuyConfigInfo对象供游戏使用。

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

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

英雄购买相关

对应XML配置文件:
Assets/Resources/Config/HeroBuyCfg.xml

部分如下:

<info un32ID="100002">
        <Name>破灭之剑</Name>
        <HeroKind>1</HeroKind>
        <un8ConsumeType>0</un8ConsumeType>
        <n32Price>0</n32Price>
        <bIsShowInShop>1</bIsShowInShop>
        <bIsShowInHeroInfo>1</bIsShowInHeroInfo>
        <UnlockHeroID>10002</UnlockHeroID>
        <Time>-1</Time>
        <DefaultSkin>110002</DefaultSkin>
        <DefaultIcon>16</DefaultIcon>
        <OnSaleSkins>0</OnSaleSkins>
    </info>
    <info un32ID="100003">
        <Name>幽影幻刺</Name>
        <HeroKind>1</HeroKind>
        <un8ConsumeType>0</un8ConsumeType>
        <n32Price>0</n32Price>
        <bIsShowInShop>1</bIsShowInShop>
        <bIsShowInHeroInfo>1</bIsShowInHeroInfo>
        <UnlockHeroID>10003</UnlockHeroID>
        <Time>-1</Time>
        <DefaultSkin>110003</DefaultSkin>
        <DefaultIcon>12</DefaultIcon>
        <OnSaleSkins>0</OnSaleSkins>
    </info>

ReadHeroBuyConfig.cs

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

//貌似是英雄购买相关的
//对应配置文件:Assets/Resources/Config/HeroBuyCfg.xml
public class ReadHeroBuyConfig
{
    XmlDocument xmlDoc = null;

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

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

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

            HeroBuyConfigInfo heroBuyInfo = new HeroBuyConfigInfo ();
            heroBuyInfo.GoodsId = Convert.ToInt32 (typeName);
            string un8ConsumeType = "";
            string n32Price = "";

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

                case "HeroKind":
                    heroBuyInfo.HeroKind = GameMethod.ResolveToIntList (xEle.InnerText);
                    break;

                case "un8ConsumeType":
                    un8ConsumeType = Convert.ToString (xEle.InnerText);
                    break;

                case "n32Price":
                    n32Price = Convert.ToString (xEle.InnerText);
                    break;

                case "UnlockHeroID":
                    heroBuyInfo.UnlockHeroID = Convert.ToInt32 (xEle.InnerText);
                    break;

                case "Time":
                    heroBuyInfo.Time = Convert.ToInt32 (xEle.InnerText);
                    break;

                case "DefaultSkin":
                    heroBuyInfo.DefaultSkin = Convert.ToInt32 (xEle.InnerText);
                    break;

                case "DefaultIcon":
                    heroBuyInfo.DefaultIcon = Convert.ToString (xEle.InnerText);
                    break;

                case "OnSaleSkins":
                    heroBuyInfo.OnSaleSkins = GameMethod.ResolveToStrList (xEle.InnerText);
                    break;

                case "bIsShowInShop":
                    heroBuyInfo.IsShowShop = Convert.ToBoolean (Convert.ToInt32 (xEle.InnerText));
                    break;

                case "bIsShowInHeroInfo":
                    heroBuyInfo.bIsShowInHeroInfo = Convert.ToBoolean (Convert.ToInt32 (xEle.InnerText));
                    break;
                }
            }

            heroBuyInfo.Consume = GameMethod.ResolveToIntDict (un8ConsumeType, n32Price);
            ConfigReader.heroBuyXmlInfoDict.Add (heroBuyInfo.GoodsId, heroBuyInfo);
        }
    }
}

/*
XML格式:
<info un32ID="100001">
    <Name>飞樱漫舞</Name>
    <HeroKind>2</HeroKind>
    <un8ConsumeType>1</un8ConsumeType>
    <n32Price>2500</n32Price>
    <bIsShowInShop>1</bIsShowInShop>
    <bIsShowInHeroInfo>1</bIsShowInHeroInfo>
    <UnlockHeroID>10001</UnlockHeroID>
    <Time>-1</Time>
    <DefaultSkin>110001</DefaultSkin>
    <DefaultIcon>32</DefaultIcon>
    <OnSaleSkins>111001,111002</OnSaleSkins>
</info>
*/
public class HeroBuyConfigInfo: System.Object
{
    #region 道具信息
    public int GoodsId;
    public string Name;
    public List<int> HeroKind;
    public Dictionary<int, int> Consume;
    public int UnlockHeroID;
    public int Time;
    public int DefaultSkin;
    public string DefaultIcon;
    public List<string> OnSaleSkins;
    public bool IsShowShop;
    public bool bIsShowInHeroInfo;
}
标题基于SpringBoot+Vue的社区便民服务平台研究AI更换标题第1章引言介绍社区便民服务平台的研究背景、意义,以及基于SpringBoot+Vue技术的研究现状和创新点。1.1研究背景与意义分析社区便民服务的重要性,以及SpringBoot+Vue技术在平台建设中的优势。1.2国内外研究现状概述国内外在社区便民服务平台方面的发展现状。1.3研究方法与创新点阐述本文采用的研究方法和在SpringBoot+Vue技术应用上的创新之处。第2章相关理论介绍SpringBoot和Vue的相关理论基础,以及它们在社区便民服务平台中的应用。2.1SpringBoot技术概述解释SpringBoot的基本概念、特点及其在便民服务平台中的应用价值。2.2Vue技术概述阐述Vue的核心思想、技术特性及其在前端界面开发中的优势。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue如何有效整合,以提升社区便民服务平台的性能。第3章平台需求分析与设计分析社区便民服务平台的需求,并基于SpringBoot+Vue技术进行平台设计。3.1需求分析明确平台需满足的功能需求和性能需求。3.2架构设计设计平台的整体架构,包括前后端分离、模块化设计等思想。3.3数据库设计根据平台需求设计合理的数据库结构,包括数据表、字段等。第4章平台实现与关键技术详细阐述基于SpringBoot+Vue的社区便民服务平台的实现过程及关键技术。4.1后端服务实现使用SpringBoot实现后端服务,包括用户管理、服务管理等核心功能。4.2前端界面实现采用Vue技术实现前端界面,提供友好的用户交互体验。4.3前后端交互技术探讨前后端数据交互的方式,如RESTful API、WebSocket等。第5章平台测试与优化对实现的社区便民服务平台进行全面测试,并针对问题进行优化。5.1测试环境与工具介绍测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值