關於Unity的幾種XML讀取方式

最近在用Unity做手機遊戲,其中關卡解鎖信息需要用xml保存

那麼問題就來了,Unity有多種路徑操作的方法,但是對於移動端,有的方法只能讀不能寫……

於是我去上網查了點資料

(參考資料:http://www.manew.com/forum.php?mod=viewthread&tid=21404&extra=page%3D1%26filter%3Dtypeid%26typeid%3D143)

第一種——Resources.Load

這種方式是筆者首先想到的方法,想要用這個方法,需要把xml文件放在Assest\Resources文件夾下,然後通過Resources.Load(文件名)的方式來讀取。

例:比如我在Asset\Resources下有個GateInfo.xml的文件。那麼想要讀取這個文件,只要Resources.Load("GateInfo");即可讀取。

PS:不要加後綴名!不要加後綴名!不要加後綴名!因爲很重要所以說三次

但是這種方式在編輯器的情況下可以對文件進行“增刪改查”,但是在Build之後,就只能執行“查”(也就是讀)的操作了……

第二種——Application.persistentDataPath

這是筆者最後決定使用的方法,這種方法的優點是可以在移動上執行讀寫操作,關於存儲位置如下:

Windows : C:\Users\Dorameon\AppData\LocalLow\Doraking     其中Doraemon是筆者的電腦用戶名,Doraking爲項目名

Android: /data/data/com.Doraking.Mission/files:  其中com.Doraking.Mission爲你build時所設定的Bundle Identifier

IOS :Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents(PS:筆者沒有IOS設備,沒辦法實測,於是從參考資料裏複製了下來

例:
SavePath = Application.persistentDataPath + "//GateInfo.xml";
		XmlDocument GateInfoDoc = new XmlDocument();
		GateInfoDoc.Load(SavePath);
		GateInfoDoc.Save(SavePath);


PS:這個和Resources.Load不一樣,是獲取文件路徑,要加後綴名!

第三種——Application.dataPath

這種方法可以把xml文件直接放在根路徑下直接讀取,但是根據筆者查閱的資料,發現這種方式在移動端沒有對應的讀寫權限╮( ̄▽ ̄")╭

但是這種方法有一種改進措施。那麼就是把xml文件放在Assest\StreamingAssets下,然後通過Application.streamingAssetsPath讀取

這樣在移動端上可以執行讀的操作了~

操作方法和第二種方法類似,這裏筆者就不再重複描述了



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章