私はAndroidでUnityゲームをデバッグしていますが、すべてUnityエディタで動作します。現在のゲームデータをAndroidに保存するとUnauthorizedAccessExceptionが発生します。Android Unity c#:UnauthorizedAccessExceptionゲームデータを保存して書き込む
私はpersistentDataPathに書き込みを行っているため、なぜアクセスがブロックされているのか分かりません。ここ
はLogcatを使用してコンソール・ログである:
<i>AndroidPlayer(motorola_Moto_G_(5)@192.168.0.26)</i> UnauthorizedAccessException:
Access to the path "/current.sg" is denied.
at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x0028a] in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/FileStream.cs:320
at System.IO.FileStream..ctor (System.String path, FileMode mode) [0x00000] in <filename unknown>:0
at SaveLoadManager.SaveGame (.Game currentGame) [0x0002a] in F:\Work\Magister\Magister\Magister\Assets\Scripts\SaveLoadManager.cs:16
at PlayerController.FixedUpdate() [0x0058e] in F:\Work\Magister\Magister\Magister\Assets\Scripts\PlayerController.cs:244
FixedUpdate()ループで実行されているPlayerControllerから関連コード:
if (!gameSaved)
{
SaveLoadManager.SaveGame(gameManager.GetComponent<Game>());
gameSaved = true;
}
SaveLoadManagerからセーブデータ機能:
public static void SaveGame(Game currentGame)
{
string saveGameFileName = Path.DirectorySeparatorChar + "current.sg";
string filePath = Path.Combine(Application.persistentDataPath, saveGameFileName);
BinaryFormatter bf = new BinaryFormatter();
FileStream file = new FileStream(filePath, FileMode.Create);
GameData data = new GameData(currentGame);
bf.Serialize(file, data);
file.Close();
}
AndroidManifest.xmlの読み取り/書き込みのアクセス許可:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
:
これは、コードがどのように見えるかです。 'string saveGameFileName = Path.DirectorySeparatorChar +" current.sg "'を 'string saveGameFileName =" current.sg "'に変更してみてください。 –