Unity中解析ini配置文件----INIParser

??

大家好,我是孙广东。   转载请注明出处:http://blog.csdn.net/u010019717

更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/space-uid-18602.html  ??

Ini files

这个库可处理ini文件。 请注意,该文件可以是任何扩展名(如.txt)只要 文件内容是正确格式。

[Player]
name=Arnold
avatar=2
; This section stored hi-scores
[Hi-score]
Top1=32900
Top2=12000
Top3=4700

那怎么使用这个库呢?

1. 添加 “INIParser.cs” 到 Unity.
2. 声明一个 INIParser 对象并使用它.

INIParser ini = new INIParser();
ini.Open(“C:/Test.ini”);
ini.WriteValue(“Player”,“Name”,“Arnold”);
ini.Close();
多个Ini文件时

    请注意,对于每个INIParser实例,你在任何一个时间只能有一个open的ini文件,你可以打开下一个ini文件,但是之前您必须使用Close()。

INIParser ini = new INIParser();
ini.Open(“C:/Test.ini”);
ini.WriteValue(“Player”,“Name”,“Arnold”);
ini.WriteValue(“Hi-score”,“Top3”,1000);
ini.Close();
ini.Open(“C:/Test2.ini”);
ini.WriteValue(“Position”,“x”,2);
ini.WriteValue(“Position”,“y”,3);
ini.Close();


Methods方法

Open(string path)

Open ini_file关于 reading 和 writing. 如果这个文件不存在将被创建。. 一旦你完成了reading/writing 记得调用函数 Close( )。来保存这个ini文件的所有改变。

Open(TextAsset asset)

Open 一个 TextAsset 作为 ini_file. 如果做了任何更改,则副本将保存在Persistent Data Path持久性数据的路径下。这个函数会一直看着Persistent Data Path持久数据路径,如果有任何修改的TextAsset的副本,实际上看游戏中的文本资源包之前首先看到在Persistent Data Path持久数据路径的变化。


OpenFromString(string str)

从字符串创建ini文件和打开它用于进行读/写。正确格式化的字符串作为ini文件(即:sections部分,keys键和values值) 否则将无法正确创建ini文件。注意,这个ini文件是暂时的,只存在于内存中。但是你可以使用ToString()返回的字符串可以被保存到服务器或磁盘的完整的ini文件。


string ToString(string str)

返回完整的  ini file 字符串。


Close()

一旦你完成读取或写入任何打开的ini文件,应调用此方法。ini文件数据存储在内存中,直到调用此方法,这一数据被写入到磁盘。


string ReadValue(string section, string key, string default)

(重载: bool, int, long, double, byte[], DateTime)

从ini_file中读取值。 如果值不存在,(默认值)将被返回。


WriteValue(string section, string key, string value)
(overload: bool, int, long, double, byte[], DateTime)
写入 一个值到 ini_file

SectionDelete(string section)

删除整个ini文件的section部分,这也将删除与之关联的所有键/值对。

bool IsSectionExists(string section)

检查是否存在ini文件中的section 节。您不需要检查,以防止错误,因为如果你ReadValue从一个不存在的section 节,ReadValue将只返回默认值。然而,有时它可以是有用的如果ini文件已保存的具体数据。

KeyDelete(string section, string key)

删除被选择的  key (还有和它相关的 value) 从 ini file.中

bool IsKeyExists(string section, string key)

检查以查看是否有指定的键存在于ini文件。您不需要检查,以防止错误,因为如果你ReadValue一个不存在的节,ReadValue将只返回默认值。然而,有时它可以是有用的如果ini文件已保存的具体数据。

Open(TextAsset asset)

TextAsset 是read-only, 所以任何的修改是放在sandbox area 沙箱区域(persistentDataPath).

技术分享

Example code:

INIParser ini = new INIParser();
TextAsset asset = Resource.Load("TextAssetExample") as TextAsset;
ini.Open(asset);
ini.WriteValue("Player","Name","Arnold");
ini.Close();

有时候,你会想使用TextAsset文本资源作为ini文件。游戏包中包含TextAsset文本资源,因此它在每个平台上的读/写操作可靠。如果你使用streaming assets流的资产作为ini文件,有时你会达到以读/写权限错误移动平台上。
你必须确保该TextAsset文本资源存在,否则任何读/写操作将不会正确工作。

Credits

library 是由STA INIFile改编而成,仿照游戏制作室INI文件系统。



Example code:

Save 和  load game data

INIParser ini = new INIParser();
// Open the save file. If the save file does not exist, INIParser automatically create
// one
ini.Open(Application.persistentDataPath + "save.txt");
// Read the score. If the section/key does not exist, default score to 10
int score = ini.ReadValue("Player","Score",10);
score += 100;
ini.WriteValue("Player","Score",score);
ini.Close();

在这场比赛第一次运行时,会发生什么?

这段代码从保存文件读取比分,增加100,并保存新的得分值。

Open()将检测到“save.txt”不存在,所以空白“save.txt”将被创建。 然后,分数将被读取。自从“save.txt”是空白的,分数不能在ini文件中找到,所以它默认为10。然后,新的分数的值写入ini文件。


Save 和 load game data 从 TextAsset文件中

INIParser ini = new INIParser();
TextAsset asset = Resource.Load("TextAssetExample") as TextAsset;
ini.Open(asset);
int score = ini.ReadValue("Player","Score",10);
score += 100;
ini.WriteValue("Player","Score",score);
ini.Close();


有时候,你会想使用TextAsset文本资源作为ini文件。游戏包中包含TextAsset文本资源,因此它在每个平台上的读/写操作可靠。如果你使用streaming assets流的资产作为ini文件,有时你会达到以读/写权限错误移动平台上。
你必须确保该TextAsset文本资源存在,否则任何读/写操作将不会正确工作。



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。