Ini files 这个库可处理ini文件。 请注意,该文件可以是任何扩展名(如.txt)只要 文件内容是正确格式。
[csharp] view plaincopyprint?
- [Player]
- name=Arnold
- avatar=2
- ; This section stored hi-scores
- [Hi-score]
- Top1=32900
- Top2=12000
- Top3=4700
那怎么使用这个库呢? 1. 添加 “INIParser.cs” 到 Unity.
2. 声明一个 INIParser 对象并使用它.
[csharp] view plaincopyprint?
- INIParser ini = new INIParser();
- ini.Open(“C:/Test.ini”);
- ini.WriteValue(“Player”,“Name”,“Arnold”);
- ini.Close();
多个Ini文件时
请注意,对于每个INIParser实例,你在任何一个时间只能有一个open的ini文件,你可以打开下一个ini文件,但是之前您必须使用Close()。
[csharp] view plaincopyprint?
- 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:
[csharp] view plaincopyprint?
- 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
[csharp] view plaincopyprint?
- 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文件中
[csharp] view plaincopyprint?
- 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文本资源存在,否则任何读/写操作将不会正确工作。
|