Android端末で初回起動時にStreamingAssetsからPersistentDataディレクトリにデータをコピーする方法
UnityでStreamingAssetsに配置したファイルはアプリコンパイル時にも圧縮されないため、必要な情報の保存に利用できる。
しかしこのStreamingAssetsはアプリ内にStreamingAssetsという名前のディレクトリが作成されるわけではなく、いわゆるシムリンク的なもので、デバイス毎にどこに保存されるかは異なる。
その中でもAndroidの場合が少し曲者で、AndroidのStreamingAssets上のファイルはReadはできるがWriteができない。
なので通常は初回起動時にStreamingAssetsからPersistentDataディレクトリへファイルをコピーし、二回目以降はそちらを読み書きして使う方法がメジャーとなっている。
void Start(){ if (!File.Exists (Application.persistentDataPath + "/" + filename)) { FileCopyFromStreamingToPersistent(); } }
- 目的のファイルがpersistentDataディレクトリにない場合は初回起動とみなしてファイルをコピーする
void FileCopyFromStreamingToPersistent(){ string path = Application.streamingAssetsPath + "/" + filename; WWW www = new WWW (path); while (!www.isDone) { } string toPath = Application.persistentDataPath + "/" + filename; File.WriteAllBytes (toPath, www.bytes); }
- 実際にコピーをするメソッドはこちら