【制作実習】Unityでユーザーデータの保存

コールアンドマジック体験版ではユーザーデータはシンプルにPlayerPrefsを使用していた。

製品版では、専用のデータファイルを作成して保存する。

その際、データの暗号化を行う。

方法はいろいろあるんだけれども、今回採用した方法はデータクラスをJSON形式にシリアライズして、それをさらに暗号化してファイルに出力する方式だ。

UserDataClassというクラスを作成して、そのクラスにSaveメソッドを実装する。

こんな感じ。

//以上略
public void Save() {
	//①
	string json = JsonMapper.ToJson(this) + "[END]";
	//②
	string rawString = Utils.EncryptRJ256(Utils.sKy, Utils.sIV, json);
	//③
	string filePath = Application.persistentDataPath + "/book" + bookNo;
		
	FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write);

	BinaryWriter writer = new BinaryWriter(fileStream);

	writer.Write(rawString);

	writer.Close();
}
//以下略

① データクラスをJSON形式の文字列に変換
※ 複合時に文字列の末尾が不要な文字でパディングされることがあるのでデータの終わりを示すリテラルを追加してある

② ①で作成した文字列を暗号化する

③ 永続化データパスにバイナリファイルとして出力する

読み込みはスタティックなファクトリメソッドで、ちょうど逆の順序で行う。

内部処理の実装については、自作したコードはなく、ブログなどで紹介されているコードを使わせていただきました。

JSON化については下記のサイトを参考にさせていただきました。

ケットシーウェア

暗号化については下記のサイトを参考にさせていただきました。

YAMINABE

5年前

コメントを残す

メールアドレスが公開されることはありません。