ConfigReader(二)—— MapLoadConfig
来源:互联网 发布:拉比 婴儿床 知乎 编辑:程序博客网 时间:2024/05/29 02:43
目录为Assets/Scripts/ConfigReader目录下MapLoadConfig.cs这个文件主要是从config中读取并持有地图信息。先来看看这个config文件长什么样:Assets/Resources/Config/MapLoadCfg.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><MapLoadCfg xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <info MapID="1001"> <LoadScene>pvp_001</LoadScene> <MiniMap>MiniMap_001</MiniMap> <NameCn>圣光营地</NameCn> <ACameraPos>1</ACameraPos> <BCameraPos>6</BCameraPos> <ShowPic>135</ShowPic> <PlayerNum>6</PlayerNum> <PlayerMode>3V3</PlayerMode> <ShopID>1001</ShopID> <CameraType>2</CameraType> <IsAI>1</IsAI> <IsNormal>1</IsNormal> <IsRank>1</IsRank> <IsTrain>0</IsTrain> <IsDungeon>0</IsDungeon> </info> <info MapID="1002"> <LoadScene>pvp_002</LoadScene> <MiniMap>MiniMap_002</MiniMap> <NameCn>奥斯深渊</NameCn> <ACameraPos>15</ACameraPos> <BCameraPos>20</BCameraPos> <ShowPic>133</ShowPic> <PlayerNum>6</PlayerNum> <PlayerMode>3V3</PlayerMode> <ShopID>1001</ShopID> <CameraType>1</CameraType> <IsAI>1</IsAI> <IsNormal>1</IsNormal> <IsRank>1</IsRank> <IsTrain>0</IsTrain> <IsDungeon>0</IsDungeon> </info> <info MapID="1000"> <LoadScene>pvp_000</LoadScene> <MiniMap>MiniMap_002</MiniMap> <NameCn>奥斯深渊新手</NameCn> <ACameraPos>100</ACameraPos> <BCameraPos>105</BCameraPos> <ShowPic>133</ShowPic> <PlayerNum>6</PlayerNum> <PlayerMode>3V3</PlayerMode> <ShopID>1001</ShopID> <CameraType>1</CameraType> <IsAI>0</IsAI> <IsNormal>0</IsNormal> <IsRank>0</IsRank> <IsTrain>1</IsTrain> <IsDungeon>0</IsDungeon> </info></MapLoadCfg>
然后是代码:
using System;using UnityEngine;using System.Xml;using System.Collections.Generic;public enum EBattleMatchType{ EBMT_NONE, //人机 EBMT_Ai, //普通 EBMT_Normal, //天梯 EBMT_Rank, //新手 EBMT_Train, //副本 EBMT_Dungeon,}//主要是从config中读取并持有地图信息//继承单例public class MapLoadConfig: Singleton<MapLoadConfig>{ //uint:mapID //MapInfo:MapInfo //目前来说,这个项目里面有三个Map private Dictionary<uint, MapInfo> mMapList = new Dictionary<uint, MapInfo>(); private XmlDocument mXmlDoc = null; //构造函数 public MapLoadConfig() { //编辑器内的目录为Assets/Resources/Config ReadConfig ("Config/MapLoadCfg"); } //根据MapId来取得Map信息 public MapInfo GetMapInfo(uint id) { if (mMapList.ContainsKey(id)) { return mMapList [id]; } return null; } //根据地图名称来获取Map信息 public MapInfo GetMapInfo(string name) { foreach (MapInfo info in mMapList.Values) { if (info.mLoadScene == name) { return info; } } return null; } //通过匹配模式找地图 //把类型是type的地图全部返回 //这里说明每一个匹配模式可以从多张地图中选择一张来玩 public List<MapInfo> GetMapList(EBattleMatchType type) { List<MapInfo> mapList = new List<MapInfo> (); foreach (MapInfo info in mMapList.Values) { bool bIs = false; switch(type) { case EBattleMatchType.EBMT_Normal: bIs = info.mIsNormal; break; case EBattleMatchType.EBMT_Ai: bIs = info.mIsAI; break; case EBattleMatchType.EBMT_Rank: bIs = info.mIsRank; break; case EBattleMatchType.EBMT_Train: bIs = info.mIsTrain; break; case EBattleMatchType.EBMT_Dungeon: bIs = info.mIsDungeon; break; case EBattleMatchType.EBMT_NONE: bIs = true; break; } if (bIs) { mapList.Add (info); } } return mapList; } //载入配置表 public void ReadConfig(string xmlFilePath) { //ResourcesManager部分的东西 ResourceUnit xmlfileUnit = ResourcesManager.Instance.loadImmediate (xmlFilePath, ResourceType.ASSET); TextAsset xmlfile = xmlfileUnit.Asset as TextAsset; if (!xmlfile) { Debug.LogError ("error infos: 没有找到指定的xml文件:" + xmlFilePath); } mXmlDoc = new XmlDocument (); //加载xml mXmlDoc.LoadXml (xmlfile.text); //这个文件里其实也只有这个MapLoadCfg节点 XmlNodeList infoNodeList = mXmlDoc.SelectSingleNode ("MapLoadCfg").ChildNodes; //(XmlNode xNode in infoNodeList) for (int i = 0; i < infoNodeList.Count; i++) { if ((infoNodeList[i] as XmlElement).GetAttributeNode("MapID") == null) { continue; } //获取MapID string mapId = (infoNodeList [i] as XmlElement).GetAttributeNode ("MapID").InnerText; MapInfo mapInfo = new MapInfo (); mapInfo.mId = Convert.ToUInt32 (mapId); //读取信息到MapInfo foreach (XmlElement xEle in infoNodeList[i].ChildNodes) { #region 搜索 switch (xEle.Name) { case "LoadScene": mapInfo.mLoadScene = Convert.ToString(xEle.InnerText); break; case "MiniMap": mapInfo.mMiniMap = Convert.ToString(xEle.InnerText); break; case "NameCn": mapInfo.mName = Convert.ToString(xEle.InnerText); break; case "ACameraPos": mapInfo.mACameraPos = Convert.ToString(xEle.InnerText); break; case "BCameraPos": mapInfo.mBCameraPos = Convert.ToString(xEle.InnerText); break; case "ShowPic": mapInfo.mShowPic = Convert.ToString(xEle.InnerText); break; case "PlayerNum": mapInfo.mPlayerNum = Convert.ToInt32(xEle.InnerText); break; case "PlayerMode": mapInfo.mPlayerMode = Convert.ToString(xEle.InnerText); break; case "CameraType": mapInfo.mCameraType = Convert.ToInt32(xEle.InnerText); break; case "IsAI": mapInfo.mIsAI = Convert.ToBoolean(Convert.ToInt32(xEle.InnerText)); break; case "IsNormal": mapInfo.mIsNormal = Convert.ToBoolean(Convert.ToInt32(xEle.InnerText)); break; case "IsRank": mapInfo.mIsRank = Convert.ToBoolean(Convert.ToInt32(xEle.InnerText)); break; case "IsTrain": mapInfo.mIsTrain = Convert.ToBoolean(Convert.ToInt32(xEle.InnerText)); break; case "IsDungeon": mapInfo.mIsDungeon = Convert.ToBoolean(Convert.ToInt32(xEle.InnerText)); break; case "ShopID": mapInfo.mShopID = Convert.ToInt32(xEle.InnerText); break; } #endregion } mMapList.Add (mapInfo.mId, mapInfo); } }}//与MapLoadCfg配置文件里的数据对应public class MapInfo{ public uint mId; //地图ID public string mName; //地图名 public string mLoadScene; //对应场景资源 public string mMiniMap; //对应小地图 public string mACameraPos; //基地爆炸相机移动目标点A public string mBCameraPos; //基地爆炸相机移动目标点B public string mShowPic; //UI地图 public int mPlayerNum; //总人数 public string mPlayerMode; //战争模式2v2 public int mCameraType; //相机类型: 1:斜45度 2:水平 public bool mIsAI; //是否人机 public bool mIsNormal; //是否普通 public bool mIsRank; //是否天梯 public bool mIsTrain; //是否新手 public bool mIsDungeon; //是否副本 public int mShopID;}
阅读全文
0 0
- ConfigReader(二)—— MapLoadConfig
- ConfigReader(二十)—— ReadGuidePathTaskConfig
- ConfigReader(二十一)—— ReadGuidePopTipTaskConfig
- ConfigReader(二十二)—— ReadGuideRewardTaskConfig
- ConfigReader(二十三)—— ReadGuideTaskConfig
- ConfigReader(二十四)—— ReadGuideTimeCtrlTaskConfig
- ConfigReader(二十五)—— ReadGuideTipTaskConfig
- ConfigReader(二十六)—— ReadGuideVoiceTaskConfig
- ConfigReader(二十七)—— ReadHeroBuyConfig
- ConfigReader(二十八)—— ReadHeroConfig
- ConfigReader(二十九)—— ReadHeroHeadConfig
- ConfigReader(六十)—— ConfigReader
- Commom(十)—— ConfigReader
- ConfigReader(一)—— MapConfig
- ConfigReader(三)—— ReadAdvancedGuideConfig
- ConfigReader(四)—— ReadBuffConfig
- ConfigReader(五)—— ReadBuySkinConfig
- ConfigReader(六)—— ReadCombineConfig
- [HTML] H5移动端知识点总结
- GIT基本概念和用法总结
- LWC 53:693. Binary Number with Alternating Bits
- js正则入门
- [NOIP2017模拟]Ball
- ConfigReader(二)—— MapLoadConfig
- 自用git指令笔记
- linux安装svn服务器(yum方式)
- 一起来学SQL(三)
- pandas使用入门
- Android群英传学习——控件架构与自定义控件
- php函数call_user_func和call_user_func_array详解
- 自己写“扫雷”(二).业务逻辑实现
- 分类器性能指标错误率、正确率、召回率