2
我正在開發保存/加載數據的Unity遊戲。我正處於該項目的測試階段,並遇到了遊戲拒絕在iOS中保存的異常情況。當在Android,Windows上運行它工作得很好,和OS X.這是我的應用代碼:iPhone 5S上的File.Create失敗
FileStream file = File.Create(GetSavePath());
bf.Serialize(file, saveFile);
file.Close();
我定義GetSavePath()
如下:
private string GetSavePath()
{
return Path.Combine(Application.persistentDataPath, SAVEPATH);
}
我定義爲SAVEPATH
SaveFile.bin
。請注意,這個問題是明確地File.Create()
,如下面的跟蹤看出:
IOException: Sharing violation on path /var/mobile/Containers/Data/Application/4AE45A80-AC36-4A96-9C69-BE01CB753896/Documents/SaveFile.bin
at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in <filename unknown>:0
at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize) [0x00000] in <filename unknown>:0
at System.IO.File.Create (System.String path, Int32 bufferSize) [0x00000] in <filename unknown>:0
at System.IO.File.Create (System.String path) [0x00000] in <filename unknown>:0
at SaveManager.Save() [0x00000] in <filename unknown>:0
at SaveManager.NewSave() [0x00000] in <filename unknown>:0
at GameManager.NewSave() [0x00000] in <filename unknown>:0
at TitleManager.NewGame() [0x00000] in <filename unknown>:0
at UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) [0x00000] in <filename unknown>:0
從上面的,應該注意的是Invoke
叫,因爲用戶必須點擊一個按鈕來創建一個新的遊戲。跟蹤中的System.IO.File.Create
的問題對應於上面的FileStream file = File.Create(GetSavePath());
。
設備信息:
- iPhone 5S
- iOS的10.1
統一版本:5.4.1f1
我還沒有測試其它iOS設備。
剛剛發現了這個,它確實是解決方案!奇怪......至少在所有其他平臺上仍然有效! –