一、通过excel生成xml数据
1. 创造xml模版
- 制作xml模板格式文件(必须要有两个相同的数据项,否则无法在Excel中进行映射
2. 将模版导入excel,通过excel生成新的xml文件
- 在Excel中打开自定义菜单:文件-选项-自定义功能区-主选项卡,将开发工具添加到主选项卡。
- 在开发工具面板里:XML-源-XML映射-添加模版文件
- 选中源面板里的模版,映射到表格里。
- 在开发工具面板里:XML-导出
二、在unity里加载和使用xml数据
1. 加载文件
TextAsset xml = Resources.Load<TextAsset>(filePath);
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml.text);
2. 获得xml
- 获取根节点下的所有子节点的List:
XmlNodeList nodLst = doc.SelectSingleNode("root").ChildNodes;
- 将某一个节点转化为一个XmlElement:
XmlElement ele = nodLst[i] as XmlElement;
- 从XmlElement里获取名称为"ID"的数据:
string value = ele.GetAttributeNode("ID").InnerText;
3. 具体函数如下
private List<string> surnameLst = new List<string>();//姓
private List<string> manLst = new List<string>();//男名
private List<string> womanLst = new List<string>();//女名
//方法一: 生成xml对应的列表
private void InitRDNameCfg()
{
TextAsset xml = Resources.Load<TextAsset>(PathDefine.RDNameCfg);
if (!xml)
{
Debug.LogError("xml file:" + PathDefine.RDNameCfg + " not exist");
}
else
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml.text);
//获取根节点下的所有子节点的List
XmlNodeList nodLst = doc.SelectSingleNode("root").ChildNodes;
for(int i = 0; i < nodLst.Count; i++)
{
//将某一个节点转化为一个XmlElement
XmlElement ele = nodLst[i] as XmlElement;
//从XmlElement里获取名称为"ID"的数据
string value = ele.GetAttributeNode("ID").InnerText;
if(value != null)
{
int ID = Convert.ToInt32(value);
foreach( XmlElement e in ele.ChildNodes)
{
switch (e.Name)
{
case "surname":
surnameLst.Add(e.InnerText);
break;
case "man":
manLst.Add(e.InnerText);
break;
case "woman":
womanLst.Add(e.InnerText);
break;
}
}
}
}
}
}
#endregion
三、随机生成名字的函数
将以下函数加载到unity中对应的按钮上,即可随机生成名字
//获得列表里的数据
public string GetRDNameData(bool man = true)
{
//PETools 会随机返回一个数
string name = surnameLst[PETools.RDInt(0, surnameLst.Count - 1)];
if (man)
{
name += manLst[PETools.RDInt(0, manLst.Count - 1)];
}
else
{
name += womanLst[PETools.RDInt(0, womanLst.Count - 1)];
}
return name;
}