LoginSignup
2
4

More than 3 years have passed since last update.

簡易なセーブデータの暗号化 (PlayerPrefs)

Last updated at Posted at 2019-06-01

前提

  • unity 2018.4.1f1、2018.4.32f1
  • System.Security.Cryptography BlockSize 128bit, KeySize 256bit, Mode CBC, Padding PKCS7

できること

  • 標準のPlayerPrefsを置き換える形で、セーブデータの暗号化ができます。
  • PlayerPrefsを継承するので、クラス名を付け替えるだけで置き換えが完了します。
  • クラスオブジェクトを扱うことが可能です。(GetObject<T> ()SetObject<T> ())

アセットの入手 (GitHub)

ダウンロード ⇒ CryptoPlayerPrefs.unitypackage
ソースはこちらです。

導入

  • 最小限必要なアセットは、Crypto.csCryptoPlayerPrefs.csです。
  • Sample.csは使用例です。シーンSampleSceneで挙動を確認できます。

簡単な使い方

  • PlayerPrefsの代わりにCryptoPlayerPrefsを使用します。
    • クラス名が異なる以外は同じ使い方です。
  • 鍵は自動生成することも、任意に定めることもできます。
    • Sample.csには、切り替えスイッチがあります。
  • 鍵は、何処かに保存しておく必要があります。例えば…
    • ソース中でハードコーディングする
    • 難読化してPlayerPrefsでセーブする
    • Fixした画像データの一部を使用する
  • GetObject<T> ()SetObject<T> ()を使う対象には、[Serializable]アトリビュートの指定が必要です。
    • 具体的には、Sample.csを参照してください。
    • このセーブデータは、.NETのバージョンに依存しており、異なるバージョン間では互換性が保証されません。

開発途中はセーブデータの内容を見たい

  • CryptoPlayerPrefs.cs冒頭の#define CRYPTOをコメントアウトすると、暗号化を行いません。
    • 素のPlayerPrefs+オブジェクト拡張の挙動になります。

【参考】#define 触るの面倒なんだけど…

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4