您当前的位置: 首页 >  unity

野奔在山外的猫

暂无认证

  • 4浏览

    0关注

    85博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Unity 笔记】XML 数据存储

野奔在山外的猫 发布时间:2021-05-15 23:22:17 ,浏览量:4

游戏引擎:Unity 2017版本以上 编程语言:C# 编译平台:Visual Studio 2019

一、了解XML 1.1 什么是XML
  • 可扩展标记语言(EXtensibleMarkupLanguage)
  • 类似于 HTML 的一种标记语言
  • 以 传输数据 为宗旨
  • 标签没有被预定义,需要自行定义标签
  • 具有自我描述性
  • 是 W3C 的推荐标准
1.2 XML与HTML的主要差异 区别焦点XML被设计用于传输和存储数据数据内容HTML被设计用于显示数据数据外观

  特别的注意:XML不是HTML的替代。

1.3 文本中的XML

  下面是John写给George的便签,存储为XML:


George
John
Reminder
Don't forget the meeting!

  XML的内容仅为纯文本内容。受益于XML的标签不确定性,我们可以定义我们需求的标签与标签内容,来更加便于实现我们的现实需求。如下图所示:



  
  

  我们定义了两个标签分别代表zh_CNen_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。

2.2 添加Header与Root节点
//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);

  其中,headerCreateXmlDeclaration() 请参考 CSDN博主:快乐生活2009 —— xml写出Declaration(version) 的详细讲解。

2.3.1 添加一级节点
//创建一级子节点 命名为CharaterTemplateData
XmlEmlement firstPoint = xmlDoc.CreateElement("CharacterTemplateData");
root.AppendChild(firstPoint);

  需注意的是,一级节点是仅次于根节点。故这里选择root.AppendChild(e);。如果为xmlDoc.AppendChild(e);,则该一级节点与根节点同级,并不是真正意义上的一级节点。

2.3.2 添加二级节点(续)

  同理,按照一级节点的理解,我们添加二级节点。

//创建一级子节点 命名为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; 
	 }
}
关注
打赏
1659777066
查看更多评论
立即登录/注册

微信扫码登录

0.2188s