2013年02月23日

[Unity] iOSでのデータの保存先

iPhoneで画像を本体に保存しようとしたときにハマったので備忘メモ。

結論から先に言うと、File.WriteAllBytes()で指定するパスは

Application.dataPath + "/../../Documents/test.png"
■■■ 修正 ■■■
Application.persistentDataPath + "/filename"
■■■ 修正(ここまで) ■■■
でした。


■順を追って説明すると……
画像の保存の仕方を調べると、「EncodeToPNG()」「File.WriteAllBytes()」を使うとよいことがわかった。

Texture2D.EncodeToPNGを使った画像の保存の仕方(Unityリファレンス):
http://docs.unity3d.com/Documentation/ScriptReference/Texture2D.EncodeToPNG.html

Editorでは保存ができたものの、iPhoneでは保存できたかの確認方法がわからない。
 そこで、iPhone内のディレクトリをPCから探索できる「iPhone Explorer」を使って確認してみる。

iPhone Explorer:
http://www.macroplant.com/iexplorer/

確認したら、保存されてなかった orz
iPhoneで保存されるには特殊なパス設定が必要だと判明↓

[Unity3D]ウェブからダウンロードしたファイルを保存したり読み込んだり:
http://terasur.blog.fc2.com/blog-entry-245.html

パスに「Application.persistentDataPath」を使うとリジェクトされる可能性があるらしいとの
記載から対策を調べる↓

[Unity 3D]iPhoneでの保存先:
http://createwave.blog104.fc2.com/blog-entry-199.html

パスの末尾を「/Documents」にしてみた↓

Application.dataPath + "/../Documents/test.png"

保存されない orz
Application.dataPath についてリファレンスを調べてみた↓

Application.dataPath(Unityリファレンス)
file:///Applications/Unity/Documentation/ScriptReference/Application-dataPath.html

すると、こんな記述を発見。
iPhone player: <:path to player app bundle>/<:AppName.app>/Data

iPhone Explorer↓
スクリーンショット 2013-02-23 10.05.51.png

Documentsディレクトリは、同階層じゃなくて階層1つ上にあるじゃないか!
ということで、iOSに保存するときの正解のパスはこれらしい。

Application.dataPath + "/../../Documents/test.png"


■■■ 追記 ■■■
現在はApplication.persistentDataPathに「/Documents」が含まれるとコメントをいただきました。
確認したところ、
Application.persistentDataPath + "/filename"
で実現できました。
■■■ 追記(ここまで) ■■■

審査でリジェクトされるかどうかは、これからやってみないとわかりませんが……。
ひとまず、保存ができてよかった!
タグ:iOS UNITY 保存先
posted by be-style at 10:18| Comment(2) | Unity
この記事へのコメント
現在はApplication.persistentDataPathはDocumentsフォルダを参照してるので、単純にApplication.persistentDataPath + "/filename"で保存しても大丈夫なハズです
Posted by tsubaki_t1 at 2013年02月23日 23:40
コメントありがとうございます!

ご指摘の通り、
Application.persistentDataPath + "/filename"
で保存できました!
改善されてたんですね^^;

知らないことがまだまだ多いです・・・。
これからも色々と試行錯誤していきますので、お気づきの点があればコメントいただけると嬉しいです!
Posted by be-style at 2013年02月24日 08:12
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]