Unity セーブ(復号化)

Unityでセーブデータを復号化する方法です。

今回はAESでセーブデータを復号化します。

セーブデータをパソコンのローカルから読み込みます。

1.ReadSaveDataClassというスクリプトを作ります。

2.中身はこちらです。

using UnityEngine;
using System.Collections;
using System.IO;
using System.Security.Cryptography;
using System.Text;

public class ReadSaveDataClass : MonoBehaviour
{

void OnEnable()
{
StartCoroutine(ReadDataCoroutine());
}

private IEnumerator ReadDataCoroutine()
{
string filepath = Application.persistentDataPath + "/save";


if (File.Exists(filepath))
{
//ファイル読み込み
byte[] bytes = File.ReadAllBytes(filepath);
//復号化
byte[] bytesDecrypt = AesDecrypt(bytes);
// byte配列を文字列に変換
string decryptString = Encoding.UTF8.GetString(bytesDecryp);

yield return ReadDataToDataCoroutiine(decryptString);
}

yield return new WaitForSecondsRealtime(0.5f);
this.enabled = false;
}


private IEnumerator ReadDataToDataCoroutiine(string decryptString)
{
SaveSaveDataClass saveSaveDataClass = JsonUtility.FromJson<SaveSaveDataClass>(decryptString);
SaveDataClass.number = saveSaveDataClass.numForSave;
SaveDataClass.text = saveSaveDataClass.textForSave;
SaveDataClass.isbool = saveSaveDataClass.isboolForSave;
yield return null;
}

public byte[] AesDecrypt(byte[] byteText)
{
AesManaged aes = GetAesManager();
byte[] decryptText = aes.CreateDecryptor().TransformFinalBlock(byteText, 0, byteText.Length);
return decryptText;
}

private AesManaged GetAesManager()
{
AesManaged aes = new AesManaged();
aes.KeySize = 128;
aes.BlockSize = 128;
aes.Mode = CipherMode.CBC;
aes.IV = Encoding.UTF8.GetBytes("0123456789abcdef");//半角英数字16桁(WriteSaveDataClassと同じもの)
aes.Key = Encoding.UTF8.GetBytes("0123456789abcdef");//半角英数字16桁(WriteSaveDataClassと同じもの)
aes.Padding = PaddingMode.PKCS7;
return aes;
}

}

3.Hiarachyにゲームオブジェクトを作成して、そのオブジェクトにReadSaveDataClassをアタッチする。

4.ReadSaveDataClassのactiveのチェックボックスをOFFにしておく。

5.エディタを再生して、ReadSaveDataClassのactiveのチェックボックスをONにする。

6.パソコンのローカルのセーブデータを読み込み、Unityのデータに読み込むことができます。

Unity セーブ(復号化)です。

以前の記事のUnity セーブ(暗号化)で作成したSaveDataClassとSaveSaveDataClassとWriteSaveDataClassを引き続き使用しています。

5の”エディタを再生して、ReadSaveDataClassのactiveのチェックボックスをONにする。”の前に、セーブデータを作成しておく必要があります。

これでUnity セーブ(復号化)を終わります。

セーブデータの書き込み、読み込みをできるようになって、制作の幅を広げていきましょう。

DLsiteで3Dアクションゲーム「Where the sky is」をリリースしています。

よかったら、こちらもよろしくお願いします。

同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite

Twitterでフォローしよう

おすすめの記事