Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

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

前提

  • 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 触るの面倒なんだけど…

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?