PlayerPrefsを改善したクラスを提供してところを見つけたのでサイトの情報を紹介したい:
3/11/2011
Unity でプラットフォーム独自の方法でデータを保存するのに PlayerPrefs を使用することがある。
このクラスはハッシュテーブルの働きをして キーバリューのペアを保存できる。
ビルトインの PlayerPrefs クラスの欠点として iOS で非常に遅く、Android でさらに遅いことだ。Google Nexus One で行ったテストでは、毎秒あたり 平均 6.25 個のキーバリューのペアしか保存出来なかった。300 件以上を保存しようとしていたので、あまりに時間がかかりすぎた。全ての修正毎にファイルI/Oが行われている可能性が高い。現在の PlayerPrefs クラスは大量データを扱うのに不向きだ。
そこでオリジナルの PlayerPrefs を実装しようと決めて、プロトタイプの中で高速保存が出来るパラメーターのチューニングを可能とした。同じデバイス上で現在は300 件以上を瞬時に行えるようになった。
すでに Unity の PlayerPrefs クラスをプロジェクトで使用していて、iOS および Android での最適化方法を探している場合、次の手順によって実行出来る:
PlayerPrefs.cs ファイルをダウンロードしてプロジェクトに追加してほしい。
PlayerPrefs が使用されているスクリプトの冒頭に次の行を追加:
using PlayerPrefs = PreviewLabs.PlayerPrefs;PlayerPrefs.Flush() を使用して全ての値を保存する。これはデータを大量に書き込みすときか、アプリケーション終了時に行う(メインとなるゲーム クラスの中で) :
public void OnApplicationQuit() { PlayerPrefs.Flush(); }最適化として機能するために、Hashtableを保持して Flush() が呼ばれたときのみファイル書き込みするようにした。
XML形式は意図的に使用しておらず、今回気にしているローエンド デバイスで不要なオーバーヘッドがかかるためだ。
------
筆者も Unity Store でダウンロードしたプロジェクトサンプルにこのクラスが含まれていて、なるほどとおもってソースコードを眺めた記憶がある。
便利なものはどんどん活用しようぜ!
0 件のコメント:
コメントを投稿