Unity中解析ini設定檔----INIParser,unity----iniparser
大家好,我是孫廣東。 轉載請註明出處:http://blog.csdn.net/u010019717
更全的內容請看我的遊戲蠻牛地址:http://www.unitymanual.com/space-uid-18602.html
Ini files
這個庫可處理ini檔案。 請注意,該檔案可以是任何副檔名(如.txt)只要 檔案內容是正確格式。
[Player]name=Arnoldavatar=2; This section stored hi-scores[Hi-score]Top1=32900Top2=12000Top3=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// oneini.Open(Application.persistentDataPath + "save.txt");// Read the score. If the section/key does not exist, default score to 10int 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文本資源存在,否則任何讀/寫操作將不會正確工作。