解析游戏关卡配置文件及游戏角色配置文件

角色出生点配置文件

<?xml version="1.0" encoding="utf-8" ?>
<Nodes>
  <Node ID ="1001" RoleName="" Position="13.9f,0.56f,2.64f"/>
  <Node ID ="1002" RoleName="" Position="13.9f,0.56f,2.64f"/>
  <Node ID ="1003" RoleName="" Position="13.9f,0.56f,2.64f"/>
  <Node ID ="1004" RoleName="" Position="13.9f,0.56f,2.64f"/>
  <Node ID ="1005" RoleName="" Position="13.9f,0.56f,2.64f"/>
</Nodes>

游戏关卡配置文件

<?xml version="1.0" encoding="utf-8" ?>
<Nodes>
  <Node ID="1001" No="1" Name="关云长温酒斩华雄" Scene="Map_1001"/>
  <Node ID="1002" No="2" Name="众联军陈兵虎牢关" Scene="Map_1001"/>
  <Node ID="1003" No="3" Name="关云长温酒斩华雄" Scene="Map_1001"/>
  <Node ID="1004" No="4" Name="关云长温酒斩华雄" Scene="Map_1001"/>
  <Node ID="1005" No="5" Name="关云长温酒斩华雄" Scene="Map_1001"/>
  <Node ID="1006" No="6" Name="关云长温酒斩华雄" Scene="Map_1001"/>
  <Node ID="1007" No="7" Name="关云长温酒斩华雄" Scene="Map_1001"/>
  <Node ID="1008" No="8" Name="关云长温酒斩华雄" Scene="Map_1001"/>
  <Node ID="1009" No="9" Name="关云长温酒斩华雄" Scene="Map_1001"/>
  <Node ID="1010" No="10" Name="关云长温酒斩华雄" Scene="Map_1001"/>
</Nodes>

配置文件解析器:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml;
using System;
/// <summary>
/// 游戏关卡配置
/// </summary>
public class LevelCfg
{
    public int ID;
    public int No;
    public string Name;
    public string Scene;
}

public class BornPointCfg
{
    public int ID;
    public string RoleName;
    public string Position;
}
public class EasyXMLParse
{
    private Dictionary<int, LevelCfg> _levelCfg = new Dictionary<int, LevelCfg>();
    private Dictionary<int, BornPointCfg> _bornPoints = new Dictionary<int, BornPointCfg>();

    private XmlNodeList GetXMLNodeList(string name)
    {
        //加载一个XML文本资源
        TextAsset text = Resources.Load("Config/"+ name) as TextAsset;
        //构造XML文本解析器
        XmlDocument doc = new XmlDocument();
        //将文本资源转化成XML格式
        doc.LoadXml(text.text);
        //选择节点路径下的所有节点
        XmlNodeList nodeList = doc.SelectNodes("Nodes/Node");
        return nodeList;
    }
    /// <summary>
    /// 解析关卡配置文件
    /// </summary>
    /// <param name="name">关卡配置文件名</param>
    public void LoadLevelCfg(string name)
    {
        XmlNodeList nodeList = GetXMLNodeList(name);
        //遍历所有节点并将xml中的数据读取出来
        for (int i = 0; i < nodeList.Count; i++)
        {
            XmlNode node = nodeList[i];
            XmlElement elem = node as XmlElement;
            elem.GetAttribute("ID");
            //实例化关卡配置数据模型
            LevelCfg cfg = new LevelCfg();
            cfg.ID = Convert.ToInt32(elem.GetAttribute("ID"));
            cfg.No = Convert.ToInt32(elem.GetAttribute("No"));
            cfg.Name = elem.GetAttribute("Name");
            cfg.Scene = elem.GetAttribute("Scene");
            _levelCfg.Add(cfg.ID,cfg);
        }

        foreach (LevelCfg cfg in _levelCfg.Values)
        {
            Debug.LogError(cfg.ID + "," + cfg.No+"," + cfg.Name+","+cfg.Scene);
        }

    }
    /// <summary>
    /// 解析出生点的配置
    /// </summary>
    /// <param name="name">出生点配置文件名</param>
    public void LoadBornPointCfg(string name)
    {
        XmlNodeList nodeList = GetXMLNodeList(name);
        //遍历所有节点并将xml中的数据读取出来
        for (int i = 0; i < nodeList.Count; i++)
        {
            XmlNode node = nodeList[i];
            XmlElement elem = node as XmlElement;
            //实例化关卡配置数据模型
            BornPointCfg cfg = new BornPointCfg();
            cfg.ID = Convert.ToInt32(elem.GetAttribute("ID"));
            cfg.RoleName = elem.GetAttribute("RoleName");
            cfg.Position = elem.GetAttribute("Position");
            _bornPoints.Add(cfg.ID, cfg);
        }

        foreach (BornPointCfg cfg in _bornPoints.Values)
        {
            Debug.LogError(cfg.ID + ","+ "," + cfg.RoleName + "," + cfg.Position);
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yy763496668

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值