目录为: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
}