【Unity】androidでデータファイルの保存・読込み

Unity上では、CSVの保存・読込みが完成しました。
このままでは、android実機にビルドしても保存・読込みは行われないので、
修正していきたいと思います。

まずはGoogle先生にお伺いしてみます。

返ってきた答えが
Application.persistentDataPath
アプリケーションの永続的なデータ(キャッシュなど)を保存する場所
だそうです。

とりあえず、組み込んでみたいと思います。

private string FilePath = @"/program.csv"; //CSVファイルのpath

if (System.IO.File.Exists(Application.persistentDataPath+ FilePath))

FilePathのファイル名の前に”/”を追加
ファイル検索のSystem.IO.File.Existsのパスに
Application.persistentDataPath+を追加しました。

続いて、StreamWriterとStreamReaderの修正をします。

StreamWriter sw = new StreamWriter(Application.persistentDataPath+
FilePath, false, Encoding.GetEncoding("Shift_JIS"));

StreamReader sr = new StreamReader(Application.persistentDataPath+
FilePath, Encoding.GetEncoding("Shift_JIS"));


少しApplication.persistentDataPathについて触れておくと
機種依存のファイルパスだそうで、機種によってroot先が変わるんだとか

基本的には、ビルドした時にパッケージネームのフォルダーが作成されるので
その中にパスが通るようです。

Unityの基本設定では、保存先がInternalに設定されており、
Externalを選んだ時にいろいろと複雑になるようです。

また、機種変更でデータ引継ぎなどの際は要注意なんだとか…


今回は、あくまで1機種に繰り返しの保存・読込みなので、
複雑な事は、あまり考えず実装してみます。 (;^o^) \(ToT )あんたほんとにそれでいいの


これでandroidの保存フォルダにパスが通ったので、
ビルドとしたい所なんですが…

実はこのままでは、保存が出来ません。(T-T) グスッ

androidは文字のエンコードにUTF-8を使用しているので、
StreamWriterとStreamReaderの文字コードを書き直す必要があります。

なので、エンコードをUTF-8に変更します。

StreamWriter sw = new StreamWriter(Application.persistentDataPath+
FilePath, false, Encoding.GetEncoding("utf-8"));

StreamReader sr = new StreamReader(Application.persistentDataPath+
FilePath, Encoding.GetEncoding("utf-8"));


これで実機にビルドできます。(V)o\o(V)ふぉふぉふぉ


PlayerSettingを開いて、諸所の設定をします。
File.Exists⑥.jpg
File.Exists⑦.jpg
Unityでは定番の作業です。

androidにインストールする際、パッケージネームのフォルダが作成されます。
その中にお目当てのデータが保存されるので、
覚えておいて下さい。

ビルド~インストールまで終了すれば、アプリを起動します。
適当にカレンダーの入力をして保存します。
File.Exists⑧.jpg
これでCSVファイルが保存されたので、
ストレージの中を見てみます。


ここからはGalaxy S8の物になります。
使用する機種によっては、階層が変わるかもしれないので注意です。

File.Exists⑨.jpg

内部ストレージ/Android/dataまで開くと、
インストール済みのパッケージがズラッと並んでいるかと思います。

ここから自分で作ったパッケージネームを探します。
File.Exists⑩.jpg
今回はこれです。

最初探すのに苦労しますが、アルファベット順に並んでいるので
慣れると直ぐに見つかるようになると思います。

このフォルダを開くと
File.Exists⑪.jpg
二つのフォルダがあるので、filesを開きます。

File.Exists⑬.jpg
無事にCSVデータが保存されています。


このままアプリを起動すると無事にテキストが反映されたので、
CSVデータの読込みも無事に行けてます。


ちなみにApplication.persistentDataPathは、パッケージフォルダまでのrootで、
Application.persistentDataPath+@ファイル名だとパッケージフォルダ直下になります。

今回はfilesフォルダに保管したかったので、
Application.persistentDataPath+@/program.csvとしました。
ファイル名の前に/を挟むとfilesの階層まで開いてくれます。

状況によって階層を変える事ができそうです。


今回はカレンダー上でテキストを設定して、
保存・読込みまでを作りました。

実際にアプリは完成したのですが、
結局使用しておりません。

本家のスカパーからアプリが出ており必要が無くなりました(T△T) アウアウ~

ただ、今回の事を応用して体重管理アプリを作って
嫁ともども使用しております。

次回は体重管理アプリで使ったInputFieldの記事を書いてみようかと思います。

では、今回はこのへんで( ^ 0 ^ )/~~~~see you again

この記事へのコメント