目录为:Assets/Scripts/ConfigReader/目录下
ReadMsgSettingConfig.cs
msg的文字相关配置
对应配置文件:
Assets/Resources/Config/MsgSettingCfg.xml
部分如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MsgSettingConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<info id="1">
<color>255,251,201</color>
<font_size>25</font_size>
<effect>2</effect>
<effect_color>255,0,0</effect_color>
<effect_distance>0.1,0.1</effect_distance>
<position_start_in>-36,-213,0</position_start_in>
<position_end_in>-36,-213,0</position_end_in>
<position_time_in>0.2</position_time_in>
<position_start_out>-36,-213,0</position_start_out>
<position_end_out>-36,-123,0</position_end_out>
<position_time_out>1.5</position_time_out>
<rotation_start_in>0,0,0</rotation_start_in>
<rotation_end_in>0,0,0</rotation_end_in>
<rotation_time_in>0</rotation_time_in>
<scale_start_in>1.2,1.2,1.2</scale_start_in>
<scale_end_in>1,1,1</scale_end_in>
<scale_time_in>0.2</scale_time_in>
<scale_start_out>1,1,1</scale_start_out>
<scale_end_out>1,1,1</scale_end_out>
<scale_time_out>1.5</scale_time_out>
<alpha_start_in>255</alpha_start_in>
<alpha_end_in>255</alpha_end_in>
<alpha_time_in>0.2</alpha_time_in>
<alpha_start_out>255</alpha_start_out>
<alpha_end_out>0</alpha_end_out>
<alpha_time_out>0.5</alpha_time_out>
<if_frame>1</if_frame>
<staytime>1</staytime>
</info>
<info id="2">
<color>255,251,207</color>
<font_size>30</font_size>
<effect>0</effect>
<effect_color>255,0,0</effect_color>
<effect_distance>0.1,0.1</effect_distance>
<position_start_in>0,80,0</position_start_in>
<position_end_in>0,80,0</position_end_in>
<position_time_in>0</position_time_in>
<rotation_start_in>0,0,0</rotation_start_in>
<rotation_end_in>0,0,0</rotation_end_in>
<rotation_time_in>0</rotation_time_in>
<scale_start_in>1.2,1.2,1.2</scale_start_in>
<scale_end_in>1,1,1</scale_end_in>
<scale_time_in>0.2</scale_time_in>
<scale_start_out>1,1,1</scale_start_out>
<scale_end_out>1,1,1</scale_end_out>
<scale_time_out>1.5</scale_time_out>
<alpha_start_in>255</alpha_start_in>
<alpha_end_in>255</alpha_end_in>
<alpha_time_in>0.2</alpha_time_in>
<alpha_start_out>255</alpha_start_out>
<alpha_end_out>0</alpha_end_out>
<alpha_time_out>0.5</alpha_time_out>
<if_frame>1</if_frame>
<staytime>1</staytime>
</info>
ReadMsgSettingConfig.cs
using System;
using UnityEngine;
using System.Xml;
using System.Collections.Generic;
//msg的文字相关配置
//对应配置文件:Assets/Resources/Config/MsgSettingCfg.xml
public class ReadMsgSettingConfig
{
XmlDocument xmlDoc = null;
//构造函数
public ReadMsgSettingConfig(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 ("MsgSettingConfig").ChildNodes;
for (int i = 0; i < infoNodeList.Count; i++)
{
if ((infoNodeList[i] as XmlElement).GetAttributeNode("id") == null)
{
continue;
}
string typeName = (infoNodeList [i] as XmlElement).GetAttributeNode ("id").InnerText;
MsgSettingConfigInfo msgSettingInfo = new MsgSettingConfigInfo ();
msgSettingInfo.id = Convert.ToInt32 (typeName);
foreach (XmlElement xEle in infoNodeList[i].ChildNodes)
{
switch (xEle.Name)
{
case "color":
msgSettingInfo.color = GameMethod.ResolveToColor (xEle.InnerText);
break;
case "font_size":
msgSettingInfo.font_size = Convert.ToInt32 (xEle.InnerText);
break;
case "effect":
msgSettingInfo.font_effect = Convert.ToInt32 (xEle.InnerText);
break;
case "effect_color":
msgSettingInfo.fontEffect_color = GameMethod.ResolveToColor (xEle.InnerText);
break;
case "effect_distance":
msgSettingInfo.fontEffect_distance = GameMethod.ResolveToVector2 (xEle.InnerText);
break;
case "position_start_in":
msgSettingInfo.position_start_in = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "position_end_in":
msgSettingInfo.position_end_in = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "position_time_in":
msgSettingInfo.position_time_in = Convert.ToSingle (xEle.InnerText);
break;
case "postion_start_out":
msgSettingInfo.position_start_out = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "postion_end_out":
msgSettingInfo.postion_end_out = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "position_time_out":
msgSettingInfo.position_time_out = Convert.ToSingle (xEle.InnerText);
break;
case "rotation_start_in":
msgSettingInfo.rotation_start_in = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "rotation_end_in":
msgSettingInfo.rotation_end_in = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "rotation_time_in":
msgSettingInfo.rotation_time_in = Convert.ToSingle (xEle.InnerText);
break;
case "rotation_start_out":
msgSettingInfo.rotation_start_out = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "rotation_end_out":
msgSettingInfo.rotation_end_out = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "rotation_time_out":
msgSettingInfo.rotation_time_out = Convert.ToSingle (xEle.InnerText);
break;
case "scale_start_in":
msgSettingInfo.scale_start_in = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "scale_end_in":
msgSettingInfo.scale_end_in = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "scale_time_in":
msgSettingInfo.scale_time_in = Convert.ToSingle (xEle.InnerText);
break;
case "scale_start_out":
msgSettingInfo.scale_start_out = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "scale_end_out":
msgSettingInfo.scale_end_out = GameMethod.ResolveToVector3 (xEle.InnerText);
break;
case "scale_time_out":
msgSettingInfo.scale_time_out = Convert.ToSingle (xEle.InnerText);
break;
case "alpha_start_in":
msgSettingInfo.alpha_start_in = Convert.ToSingle (xEle.InnerText);
break;
case "alpha_end_in":
msgSettingInfo.alpha_end_in = Convert.ToSingle (xEle.InnerText);
break;
case "alpha_time_in":
msgSettingInfo.alpha_time_in = Convert.ToSingle (xEle.InnerText);
break;
case "alpha_start_out":
msgSettingInfo.alpha_start_out = Convert.ToSingle (xEle.InnerText);
break;
case "alpha_end_out":
msgSettingInfo.alpha_end_out = Convert.ToSingle (xEle.InnerText);
break;
case "alpha_time_out":
msgSettingInfo.alpha_time_out = Convert.ToSingle (xEle.InnerText);
break;
case "if_frame":
msgSettingInfo.if_frame = Convert.ToInt32 (xEle.InnerText);
break;
case "staytime":
msgSettingInfo.stayTime = Convert.ToInt32 (xEle.InnerText);
break;
}
}
ConfigReader.msgSettingXmlInfoDic.Add (msgSettingInfo.id, msgSettingInfo);
}
}
}
/*
XML格式:
<info id="6">
<color>255,251,201</color>
<font_size>30</font_size>
<effect>2</effect>
<effect_color>255,0,0</effect_color>
<effect_distance>0.1,0.1</effect_distance>
<position_start_in>40,227,0</position_start_in>
<position_end_in>40,227,0</position_end_in>
<position_time_in>0</position_time_in>
<rotation_start_in>0,0,0</rotation_start_in>
<rotation_end_in>0,0,0</rotation_end_in>
<rotation_time_in>0</rotation_time_in>
<scale_start_in>1.2,1.2,1.2</scale_start_in>
<scale_end_in>1,1,1</scale_end_in>
<scale_time_in>0.2</scale_time_in>
<scale_start_out>1,1,1</scale_start_out>
<scale_end_out>1,1,1</scale_end_out>
<scale_time_out>1.5</scale_time_out>
<alpha_start_in>255</alpha_start_in>
<alpha_end_in>255</alpha_end_in>
<alpha_time_in>0.2</alpha_time_in>
<alpha_start_out>255</alpha_start_out>
<alpha_end_out>0</alpha_end_out>
<alpha_time_out>0.5</alpha_time_out>
<if_frame>1</if_frame>
<staytime>1</staytime>
</info>
*/
public class MsgSettingConfigInfo: System.Object
{
public int id; //id
public Color color; //字体颜色
public int font_size; //字体尺寸
public int font_effect; //特效 如:加字体边框
public Color fontEffect_color; //字体描边颜色
public Vector2 fontEffect_distance; //字体描边
public Vector3 position_start_in; //淡入起始坐标
public Vector3 position_end_in; //淡入终点坐标
public float position_time_in; //淡入时间
public Vector3 position_start_out; //淡出起始坐标
public Vector3 postion_end_out; //淡出终点坐标
public float position_time_out; //淡出时间
public Vector3 rotation_start_in; //入旋转起始坐标
public Vector3 rotation_end_in; //入旋转终点坐标
public float rotation_time_in; //入旋转时间
public Vector3 rotation_start_out; //出旋转起始坐标
public Vector3 rotation_end_out; //出旋转终点坐标
public float rotation_time_out; //出旋转时间
public Vector3 scale_start_in; //入场缩放起始坐标
public Vector3 scale_end_in; //入场缩放终点坐标
public float scale_time_in; //缩放时间
public Vector3 scale_start_out; //出场缩放起始坐标
public Vector3 scale_end_out; //出场缩放终点坐标
public float scale_time_out; //出场缩放时间
public float alpha_start_in;//入场透明度起始值
public float alpha_end_in;//入场透明度终点值
public float alpha_time_in; //入场时间
public float alpha_start_out; //出场透明度起始值
public float alpha_end_out; //出场透明度起始值
public float alpha_time_out; //出场透明度时间
public int if_frame;
public int stayTime;
}