ConfigReader(二十三)—— ReadGuideTaskConfig

本文介绍了一款游戏中新手引导任务的配置文件解析方法,通过ReadGuideTaskConfig类从XML文件中读取各项任务参数,并将其转化为内存中的数据结构,便于游戏逻辑调用。

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

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

整个新手指导的任务都在这里面
这是ReadGuide最主要的了,Guide Task

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

部分如下:

<info TaskID="17001">
        <Text>点击进入新手训练关卡选择</Text>
        <BtnName>Training</BtnName>
        <PrefabName>UIGuideFrame</PrefabName>
        <PosXYZ>-110,-65,0</PosXYZ>
        <GuideType>1</GuideType>
        <GuideEffect>effect/ui_effect/tips_scale</GuideEffect>
        <triggertype>1</triggertype>
    </info>

ReadGuideTaskConfig.cs

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

//整个新手指导的任务都在这里面
//这是ReadGuide最主要的了,Guide Task
//对应配置文件:Assets/Resources/Config/GuideTask.xml
public class ReadGuideTaskConfig
{
    XmlDocument xmlDoc = null;

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

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

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

            GuideTaskInfo guideInfo = new GuideTaskInfo ();
            guideInfo.TaskId = Convert.ToInt32 (typeName);

            foreach (XmlElement xEle in infoNodeList[i].ChildNodes)
            {
                switch (xEle.Name)
                {
                //实际上好像并没有这个节点,而且TaskId在上面已经赋值了的
                case "TaskId":
                    guideInfo.TaskId = Convert.ToInt32 (xEle.InnerText);
                    break;

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

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

                case "PosXYZ":
                    guideInfo.PosXYZ = GameMethod.ResolveToVector3 (xEle.InnerText);
                    break;

                case "ModelID":
                    guideInfo.ModelID = Convert.ToInt32 (xEle.InnerText);
                    break;

                case "IsFinishModel":
                    guideInfo.IsFinishModel = Convert.ToInt32 (xEle.InnerText);
                    break;

                case "GuideType":
                    guideInfo.GuideType = Convert.ToInt32 (xEle.InnerText);
                    break;

                case "BtnName":
                    guideInfo.BtnName = xEle.InnerText;
                    break;

                case "triggertype":
                    guideInfo.mBtnTriggerType = (ButtonTriggerType)Convert.ToInt32 (xEle.InnerText);
                    break;

                case "type":
                    guideInfo.mDragType = (ButtonDragType)Convert.ToInt32 (xEle.InnerText);
                    break;

                case "times":
                    guideInfo.mTaskTimes = Convert.ToInt32 (xEle.InnerText);
                    break;

                case "Btncoord":
                    guideInfo.mPos = GameMethod.ResolveToVector3 (xEle.InnerText);
                    break;

                case "GuideEffect":
                    guideInfo.GuideEffect = xEle.InnerText;
                    break;
                }
            }

            ConfigReader.guideTaskXmlInfoDict.Add (guideInfo.TaskId, guideInfo);
        }
    }
}

/*
XML格式:
<info TaskID="17000">
    <Text>点击此处进入[99ffff]新手引导[-]</Text>
    <BtnName>Battle</BtnName>
    <PrefabName>UIGuideFrame</PrefabName>
    <PosXYZ>78,-250,0</PosXYZ>
    <GuideType>1</GuideType>
    <GuideEffect>effect/ui_effect/tips_scale</GuideEffect>
    <triggertype>1</triggertype>
</info>
*/
//这个有的属性,配置文件中并没有相应节点
public class GuideTaskInfo: System.Object
{
    #region 英雄头像信息
    public int TaskId;
    public string Text;
    public string PrefabName;
    public Vector3 PosXYZ;
    public string BtnName;
    public int ModelID;
    public int IsFinishModel;
    public int GuideType;
    public ButtonTriggerType mBtnTriggerType;
    public ButtonDragType mDragType;
    public int mTaskTimes;
    public Vector3 mPos;
    public string GuideEffect;
    #endregion
}
标题基于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、付费专栏及课程。

余额充值