各状況下でアプリを実行したときのパスとファイルの関係まとめ。
◆ Mac mini ◆
【Unity Editorで実行】
Finderから:HD/ユーザー名/ライブラリ/Preferences/Unity.会社名.製品名.pllist
【Standaloneで実行】
Finderから:HD/ユーザー名/ライブラリ/Preferences/Unity.会社名.製品名.pllist
【Web Player ローカルから実行】
Finderから:HD/ユーザー/ユーザー名/ライブラリ/Preferences/Unity/WebPlayerPrefs/localhost/XXX.upp
【Web Player サーバーから実行】
Finderから:HD/ユーザー/ユーザー名/ライブラリ/Preferences/Unity/WebPlayerPrefs/www_2eXXX_2eXXX\XXX.upp
◆ Windows XP ◆
【Unity Editorで実行】
レジストリ:HKEY_CURRENT_USER\Software\会社名\製品名
【スタンドアロンで実行】
レジストリ:HKEY_CURRENT_USER\Software\会社名\製品名
【Web Player ローカルから実行】
C:\Documents and setting\ユーザー名\Application Data\Unity\WebPlayerPrefs\localhost\XXX.upp
【Web Player サーバーから実行】
C:\Documents and setting\ユーザー名\Application Data\Unity\WebPlayerPrefs\www_2eXXX_2eXXX\XXX.upp
※ブラウザアプリ
アプリをサーバーから実行した場合フォルダ名はURLに依存し、ファイル名はhtmlで指定しているリンク名?に依存する。
ファイルはブラウザを閉じると作成されるようだ。
スポンサーサイト
2011/08/10(水) 06:08:44 |
セーブデータ
| トラックバック:0
| コメント:4
現時点でのまとめ
【PlayerPrefs 】 <メリット>
・扱いが比較的簡単である
・各アプリ(Web/Windows/Mac/iPhone)共通のコードで処理できる
<デメリット>
・データ改変の危険性が高い
・複雑なデータやデータファイルを分けたい場合は向かない
・「かな」「漢字」は文字化けする ※Windows/iPhone
【FileStream /BinaryFormatter 】 <メリット>
・自由なデータ構造
・ファイル分けできる
・「かな」「漢字」を扱える
・「キー」から「値」を取得できる
<デメリット>
・WebPlayer は非対応
・「キー」の数が多くなると容量も増える
【BinaryReader /BinaryWriter 】 <メリット>
・自由なデータ構造
・ファイル分けできる
・「かな」「漢字」を扱える
<デメリット>
・WebPlayer は非対応
今回のまとめは上記を使用した簡単な構造体をセーブするサンプルを作成し、各アプリ(Web/Windows/Mac/iPhone)で確認した。
Web は Windows/Mac それぞれローカルとサーバーに設置して実行確認した。
Web でセーブする場合は
PlayerPrefs を使用するしかない。
Web は体験版(宣伝用)としてのみ公開するのであればセーブする必要はなく、製品として提供したい場合はスタンドアローンにすればよい。
2010/12/21(火) 14:36:51 |
セーブデータ
| トラックバック:0
| コメント:0
前回は Stream と BinaryFormatter を使用してシリアライズした。
ファイルを分けたり、値に「かな」「漢字」を扱えた。
しかし、「キー」と「値」の対が記録されるため無駄に容量をとられてしまった。
「キー」の記録は行わないようにシリアライズする方法を考える。
BinaryReader/BinaryWriter を使用してシリアライズ部分を書き換えれば同じように記録できた。
「値」のみを記録することもできるし、「キー」と「値」の対を記録することもできる。
Web/Windows/Mac/iPhoneで動作確認。しかし、WebPlayer では非対応。
とりあえずセーブ周りはここで切り上げ。
2010/12/20(月) 14:19:37 |
セーブデータ
| トラックバック:0
| コメント:0
Unity 3D でユーザーデータなどのセーブを行う PlayerPrefs は単純でマルチプラットホームで利用可能である。しかし、複雑なデータや複数のデータに分けたい場合などはあまり有効ではない。
他に方法はないだろうか?と調べたところ、Stream を使用してシリアライズしている記事を見つけた。
値や文字列をバイナリで保存しているので「かな」「漢字」も扱える。
参考資料 シリアライズのサンプルコード セーブするファイルパス ※残念なことに WebPlayer では非対応
シリアライズ部分のコードを見ると「キー」と「値」の対で記録している。
セーブしたファイルの中身を見てみると「キー」と「値」とがそれぞれ列挙されて記録されているようだ。
例えば下記のように記録
info.AddValue("Name", "うに太郎");
info.AddValue("Sex", "♀");
info.AddValue("Age", 16);
セーブしたファイルを見ると
...NameSexAge....うに太郎♀16... ※←はイメージ
「キー」(文字列)と「値」どちらも記録されている・・・
一つの「値」を記録するのに、必ず対となる「キー」が必要ということは無駄に容量が増えてしまうのではないか?
例えば単語帳アプリなどの大量の学習履歴をセーブする場合などはどうするのだろ?
PlayerPrefs よりは汎用性がありそうだけど無駄に容量が増えるのは避けたいところ・・・
各プラットフォームで実行するのはなかなか面倒・・・
Windows ではコンパイル出来ても iOS ではエラーとか・・・
C/C++の学習が中途半端だからJava/C#とか混乱してくる・・・
いつになったらゲーム部分を進められるのだろうか?
2010/12/17(金) 17:37:39 |
セーブデータ
| トラックバック:0
| コメント:0
Unity 3D でユーザーデータなどのセーブを行うには
PlayerPrefs を使用すれば簡単に行うことができるようだ。
簡単なサンプルを試したところ、Web/Windows/Mac/iPhone それぞれのアプリで全て共通のコードで使用できた。
非常に簡単ではあるが「キー」と「値」の対を書き込むだけの単純なもの。
現状は、Windows や iPhone では「かな」「漢字」等は文字化けするようので半角英数のみを使用する。
PlayerPrefs 参考資料 PlayerPrefs チュートリアル動画 Unity サンプル Character Customization 動画にもあるよいうに複雑なデータや複数のデータに分けたい場合などはあまり有効的ではないかもしれない。
また、Windows はレジストリに、Web/Mac はファイルに出力されるが、好きに見れてしまうのでデータを改変されやすい。
2010/12/15(水) 16:50:41 |
セーブデータ
| トラックバック:0
| コメント:0