Unity3D之檔案讀寫檔案
為了完成資源的讀取和儲存,這裡做了好多的實驗,也參考了很多的文章和帖子,這裡十分感謝雨鬆的網站,很多時候都能在那裡找到思路和相應的回答。希望這個網站能一直辦下去。
開始正文,為了完成上述功能,自己本地做了很多實驗,為了統一資源版本,我想到的辦法就是把所有的AssetsBundle檔案都儲存到unity的沙盒目錄下,即Application.persistentDataPath這個目錄下。從StreamingAssetsPath目錄將檔案拷貝出來就成了一個問題,由於StreamingAssetsPath這個的只讀屬性,能使用的辦法只有一個,用www把目錄中的2進位制檔案先載入進來,再把獲取到的資源使用Stream的方式將檔案寫到persistentDataPath目錄下。用了兩天,查閱了大量的文章及回覆,揪掉了好多頭髮才把這個問題搞定。這裡只寫具體遇到的問題,程式碼的話就不方便上傳了。
幾個點需要注意到:
1、從StreamingAssetsPath讀取的時候只能使用WWW的方式,這就限定了讀取時只能使用協同方法(4.5.2以下版本,這個版本號以上的unity暫時沒有研究過)。
2、在Android真機上讀取的時候需要注意讀取檔案的路徑,網上有很多解釋,這裡就不寫了。
3、寫檔案的時候千萬不要把寫檔案的操作也放到WWW讀取的協同方法裡。否則很容易寫檔案的操作會執行的不成功,雖然不報錯,檔案也能建立,但是檔案是空的。
以上就是這兩天的深刻體會。因為要做成管理器,所以這部分程式碼寫的很痛苦,邏輯組織起來也比較討厭,尤其在真機上測試的時候簡直就是災難。
還有個建議。一定要事先寫一個簡單的日誌輸出類,可以用網上的輸出到螢幕的外掛,但是那個外掛的缺點就是回溯過程的時候會稍微費勁點。而且不利於保護邏輯有bug時的現場記錄。