2017-01-30 70 views
0

我將序列化/反序列化文件放到從Application.persistentDataPath返回的路徑中,以保存/加載由播放器創建的級別,並且其工作完美無瑕。然而,當我嘗試訪問通過Directory.GetFiles()相同的路徑我得到返回的0通過代碼訪問Android設備上的特定位置

這裏的值是怎麼了節能:

using (Stream stream = new FileStream(Application.persistentDataPath + @"\" + name + ".LevelData", FileMode.Create, FileAccess.Write, FileShare.None)) 
{ 
    formatter.Serialize(stream, level); 
} 

的原因,我想訪問此位置是爲了讓我可以彈出一個菜單,詢問玩家想要加載的級別,然後顯示他們創建的每個級別,以便他們選擇並編輯它。

這將返回大小爲0的字符串數組:

Directory.GetFiles(Application.persistentDataPath, "*LevelData", SearchOption.TopDirectoryOnly); 

此外,調試從Application.persistentDataPath返回的路徑後,我發現它返回的路徑實際上不存在我的移動設備上。但它有一些奇怪的行爲,就好像我嘗試創建可以完成該路徑的文件夾一樣,我的設備根本不會讓我,但如果我嘗試命名該文件夾的其他任何內容,它都可以正常工作。

爲了從Unity中訪問Android設備上的文件,我需要一個不同的庫嗎?在Windows上工作時,Directory.GetFiles()可以正常工作。

+0

您是否在Android清單中包含了寫入權限? – Bijan

+0

我沒有,但我是在假設,因爲序列化/加載工作(即使關閉/重新打開應用程序後),成功創建文件。你認爲我需要Directory.GetFiles的寫入權限嗎? –

+0

看到這篇文章:http://stackoverflow.com/a/41857019/366064是的,你需要權限 – Bijan

回答

0

我厭倦了這個,所以我決定了一條替代路線。

由於我能夠序列化/反序列化文件,我只是序列化一個List,我將跟上系統當前的級別。每次添加新級別時,該名稱都會添加到列表中並進行序列化。每當一個級別被刪除,該名稱將從列表中刪除並序列化。每當用戶去加載一個關卡時,這個列表就會填充到下拉列表中,這樣玩家就可以選擇他們想要加載的關卡。

無論如何,感謝大家的幫助!