游戏引擎:Unity 2017版本以上 编程语言:C# 编译平台:Visual Studio 2019
一、了解XML 1.1 什么是XML
- 可扩展标记语言(EXtensibleMarkupLanguage)
- 类似于 HTML 的一种标记语言
- 以 传输数据 为宗旨
- 标签没有被预定义,需要自行定义标签
- 具有自我描述性
- 是 W3C 的推荐标准
特别的注意:XML不是HTML的替代。
1.3 文本中的XML下面是John写给George的便签,存储为XML:
George
John
Reminder
Don't forget the meeting!
XML的内容仅为纯文本内容。受益于XML的标签不确定性,我们可以定义我们需求的标签与标签内容,来更加便于实现我们的现实需求。如下图所示:
我们定义了两个标签分别代表zh_CN
、en_US
两个语种。甚至可以添加更多语种。亦或是如下图所示:
22
Wizard
3
Warrior
120
4
Farmer
20
5
Shooter
120
二、操作
2.0 引用空间
using System.Xml;
C# 提供了对XML文件的读取方法。
2.1 XML路径及文件名//XML文件名
private string fileName = "languages.xml";
///
/// 文件路径
///
private string FilePath { get { return Application.streamingAssetsPath + "/" + fileName; } }
特别的需要注意:文件的命名严格要求有格式后缀名,或在路径中有表示。另关于Application.streamingAssetsPath
为我们电脑上的存储路径,更多了解可参考Unity文档 Application.StreamingAssetsPath。
//xmlDoc 实例
XmlDocument xmlDoc = new XmlDocument();
//添加头部信息
XmlDeclaration header = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
xmlDoc.AppendChild(header);
//创建根节点 (这里命名根节点为 root_CharacterTemplateData);
XmlElement root = xml.CreateElement("root_CharaterTemplateData");
//添加根节点
xmlDoc.AppendChild(root);
其中,header
中 CreateXmlDeclaration()
请参考 CSDN博主:快乐生活2009 —— xml写出Declaration(version) 的详细讲解。
//创建一级子节点 命名为CharaterTemplateData
XmlEmlement firstPoint = xmlDoc.CreateElement("CharacterTemplateData");
root.AppendChild(firstPoint);
需注意的是,一级节点是仅次于根节点。故这里选择root.AppendChild(e);
。如果为xmlDoc.AppendChild(e);
,则该一级节点与根节点同级,并不是真正意义上的一级节点。
同理,按照一级节点的理解,我们添加二级节点。
//创建一级子节点 命名为CharaterTemplateData
XmlEmlement secondPoint = xmlDoc.CreateElement("CharacterTemplateData");
firstPoint.AppendChild(secondPoint);
2.4 保存内容
xmlDoc.Save(FilePath);
这里的FilePath已经被我们在之前做好了封装。
2.5 查看内容 2.6 扩展 受限制于面向的平台,主要出现以 PC 、 Android 、 IOS 三大平台。这里针对于Android平台,更改【2.1 XML路径及文件名】的FilePath
。
private string FilePath
{
get
{
if(Application.platform == RuntimePlatform.Android)
return Application.persistentDataPath + "/" + fileName;
return Application.streamingAssetsPath + "/" + fileName;
}
}