あけましておめでとうございます。
今年もよろしくお願いします。
m(_ _)m
PlayerPrefsは手軽に使えて便利だ。
構造が非常にシンプルだし、SQL設計無しでもある程度使える。逆にデータベースの高速検索や集計等も便利だが、ゲームのデータ保存レベルで組み込むには少々オーバーな気がする。
とは言え、PlayerPrefsは余り頑丈ではない。というのも、解析しようと思えば解析できてしまうらしい。少なくとも暗号化等の改ざん防止は行ってないらしく、中々不安なデータ構造になってるらしい。
しかしあの手軽さは捨てがたい。
なので、暗号化出来るPlayerPrefsを探してみた。
■ZDatabase
ZDatabaseは一言で言えば暗号化出来るPlayerPrefsだ。
使ってみた感じ、セットアップ不要で使えて非常に手軽だった。
さらに保存できる型はStr/int/floatだけでなく、色々と追加されているらしい。
何故か入ってるTexture2D… まあ需要はあるんだけどねstring / Int / float / Texture2D
Vector2 / Vector3 / Vector4
byte / bool / Guid
対応プラットフォームも多く、Android/iOS/Web/PCと、どうやって調べたのかWiiやらPS3やらXboxも入ってる。
ちなみにクエリ検索等の機能は備えていない模様。
必要なら別途DBアクセスするアセットを購入する感じになると思う。
値段も$10とお手頃なので、お手軽クラック対策として良いかもしれない。Zdatabase(AssetStore)
https://www.assetstore.unity3d.com/#/content/5454
■使い方メモ
ドキュメント(英語)
http://forum.unity3d.com/attachment.php?attachmentid=41513&d=1354744425
ZDatabase.instance.ChangeDBKey(byte newKey)
DBのキーを更新する。newkeyは最低32バイト以上
ZDatabase.instance.WriteString(string KeyCode, 対応の型 value)
ZDatabase.instance.WriteEnc(string KeyCode, 対応の型 value)
対応の型の値を保存。何故か個別の関数がないので、事故注意。
全て共通で、後ろにEncと付けると暗号化してくれる。
ZDatabase.instance.ReadInt(string KeyCode, int 初期値)
ZDatabase.instance.ReadEncInt(string KeyCode, int 初期値)
対応の型から値を取り出す。上はintの例。
暗号化したデータはEncと名前についたメソッドで取り出す。
ガチでクラック対策するならデータ管理はサーバーサイドにするべきだと思う。