【Unity】Unityがデータを保存するために使うパスについて

Unityがデータを保存するために使うストレージパスについてまとめました。

Unity2018.4.0

Application.persistentDataPath

通常、リソースファイルなどはApplication.persistentDataPath配下に保存します。
AssetBundleの保存先もここでOKです。

ただこの方法は、OSごとに1点ずつ注意点があります。

まずiOSはここに保存されたものをiCloudに同期してしまいます。
同期が不要であればUnityEngine.iOS.Device.SetNoBackupFlag()Application.persistentDataPathを渡して設定します。

次にAndroidですが、AndroidiOSと違いSDカードを補助記憶装置として使うことができます。
SDカードはユーザが簡単に抜き差しできるので、これを許可する場合には取り扱いに若干注意が必要です。
もしSDカードへの保存も許可するのであれば、PlayerSettingsのOther SettingsからWrite PermissionをExternalにします。

f:id:halya_11:20190605135732p:plain:w400

Application.temporaryCachePath

消えてしまっても構わない一時的なデータはApplication.temporaryCachePathに配置します。

この領域に配置されたものはOSの都合で消されたりします。
またAndroidだとユーザの操作でかんたんに削除されてしまいます。

そのため、リソースなどの保存には向いていません。
用途としてはブラウザのキャッシュのようなイメージでいいと思います。

PlayerPrefs

上記二つとは別に、PlayerPrefsという機能が用意されています。
これは主にアプリの設定情報(音量とか)を保存しておくために使われます。
保存先のパスはプラットフォーム毎にUnityが決めたものを使います。

手軽に使えますが簡単なことしかできないため、大きなデータの保存などには向いていません。

参考

docs.unity3d.com

docs.unity3d.com

docs.unity3d.com

docs.unity3d.com