2015年9月26日土曜日

[Unity]データセーブ支援&暗号化アセットPerlib


レジストリぶっこみマンで有名なPlayerPrefsに代わるセーブシステムは色々あるが、シンプルさ優先でPerlibを購入・使ってみた。


2016/3/22: 追記
削除されていました。oh....


Perlib - Unity Asset Store

↑にアクセスするとパブリッシャー名はUnity Sucksになっているわ、サポートへのリンクはUEのトップページになっているわで悲惨な状態に....
代替アセットを探すか、自前でxml読み書きするクラス作らんとですわ。

指定のフォルダに暗号化したセーブデータとファイルを書きだす。
暗号化キーはサンプルそのままだとアレなので皆はアレしような。

セーブデータを生成してSetValueで保存、GetValueで読み込み。大変シンプル。
気に入ったのは、自作クラスをシリアライズして保存してくれる点。

現在はPC/Mac用に Environment.SpecialFolder.MyDocuments でドキュメント内にセーブフォルダを作っている。
iOS/Androidはやってないのでわからないが、Application.persistentDataPathあたりで保存と読み込みをすれば大丈夫だと思う(投げやり)。
STEAMWORKSに対応させるときにどうなるかは追記予定。

仕組みとしては、内部でXMLにしてから暗号化してるようだ。
そのため、Dictionary及びHashSetを含むクラスは保存できないので注意。
(自分は途中で気が付いてListで管理するよう書き換えた)

ちなみに暗号キーを間違えると「Bad PKCS7 padding~~」というエラーが出るので、こいつを目撃した人は読み込もうとしているセーブデータのキーが間違ってないか確認だ。