{"id":24298112,"url":"https://github.com/mixtuti/aes_save-for-unity","last_synced_at":"2026-05-01T06:31:24.329Z","repository":{"id":266066963,"uuid":"897252706","full_name":"mixtuti/AES_Save-for-Unity","owner":"mixtuti","description":"PlayerPrefsをAES暗号を用いて保存するライブラリ","archived":false,"fork":false,"pushed_at":"2025-01-21T01:52:15.000Z","size":57,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-06T04:03:02.114Z","etag":null,"topics":["aes","playerprefs","save","unity"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mixtuti.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-02T10:05:04.000Z","updated_at":"2025-01-21T01:52:18.000Z","dependencies_parsed_at":"2025-03-06T09:54:18.573Z","dependency_job_id":null,"html_url":"https://github.com/mixtuti/AES_Save-for-Unity","commit_stats":null,"previous_names":["mixtuti/aes_save"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mixtuti/AES_Save-for-Unity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mixtuti%2FAES_Save-for-Unity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mixtuti%2FAES_Save-for-Unity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mixtuti%2FAES_Save-for-Unity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mixtuti%2FAES_Save-for-Unity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mixtuti","download_url":"https://codeload.github.com/mixtuti/AES_Save-for-Unity/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mixtuti%2FAES_Save-for-Unity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32487300,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aes","playerprefs","save","unity"],"created_at":"2025-01-16T20:53:55.254Z","updated_at":"2026-05-01T06:31:24.296Z","avatar_url":"https://github.com/mixtuti.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AES_Save\n\n![代替テキスト](https://img.shields.io/badge/Unity-2022.3+-orange) \u003cimg src=\"http://img.shields.io/badge/License-Unlicense license-blue.svg?style=flat\"\u003e \u003cimg src=\"http://img.shields.io/badge/Language-C%23-green.svg?style=flat\"\u003e\u003cbr\u003e\nPlayerPrefsをAES暗号を用いて保存するライブラリです。\u003cbr\u003e\nint float string以外の型も保存可能です。\n\n## システム要件\n\nUnity 2022.3.28 での動作は確認済みです。\n\n## 概要\n\nUnity標準のPlayerPrefsの拡張機能です。\u003cbr\u003e\nAES暗号を用いてセーブデータを暗号化します。\u003cbr\u003e\nint型やfloat型、string型などの基本の型に加え、Bool型、List型、Vector2型、Vector3型、Dictionary型に対応しています。\u003cbr\u003e\nint型、Float型限定で2つの値を比較する機能も付いています。\n\u003e [!IMPORTANT]\n\u003e あくまでPlayerPrefsの拡張であるため特別な理由がない限り利用は推奨しません。\n\n## 依存関係\n\nなし\n\n## 導入方法\n\n### 1. プロジェクトへの導入\n導入方法は大きく分けて2つあります。お好きな方法で導入してください。\n\n#### 1. Unity Package Managerを使う方法\n「Window \u003e Package Manager」を開き、「Add Package from git URL」を選択します。\u003cbr\u003e\nその後、以下のURLを入力してください。\n```\nhttps://github.com/mixtuti/AES_Save-for-Unity.git?path=AESSave\n```\n#### 2. Import Packageを使う方法\nリリースから最新のUnity Packageをダウンロードし、インポートします。\n\u003e [!TIP]\n\u003e 更新が遅くなることが多いので1の方法を使うことをお勧めします。\n\n### 2. 利用方法\n適当なゲームオブジェクトに、`AESKeyManager.cs`、`AESDataExploration.cs`をアタッチする。\n\u003e [!NOTE]\n\u003e `AESDataExploration.cs`は、必須ではなく任意でアタッチすることができます。\n\n## スクリプトの解説\n\n### 1. AESCore.cs\nint,float,string型のデータを保存し暗号化するためのスクリプトです。\u003cbr\u003e\n暗号化以外にも２つのデータの差を比較する比較する機能もあります。\u003cbr\u003e\nAESKeyManagerで生成された暗号キーを用いて暗号化と復号を行います。\u003cbr\u003e\n\n### 2. AESKeyManager.cs\n適当なオブジェクトにアタッチして用いるスクリプト。\u003cbr\u003e\nキーの生成には32バイトの長さが必要です。\n\u003e [!WARNING]\n\u003e 途中で暗号化キーを変更してしまうと正常に復号ができなくなります。\n\n### 3. AESDataExploration.cs\n保存された内容をtxtやjsonファイルに書き出し、閲覧するためのデバッグ用ツールです。\n\n### 4. AESKeyManagerEditor.cs\nランダムキー生成用のボタンを追加するためのエディタ拡張機能です。\n\n### 5. AESDataExplorationEditor.cs\n保存用のボタンを追加するためのエディタ拡張機能です。\n\n## 関数\n\n1. SetEncryptedInt(string key, int value)\n2. GetEncryptedInt(string key, int defaultValue = 0)\n3. SetEncryptedFloat(string key, float value)\n4. GetEncryptedFloat(string key, float defaultValue = 0.0f)\n5. SetEncryptedString(string key, string value)\n6. GetEncryptedString(string key, string defaultValue = \"\")\n7. SetEncryptedBool(string key, bool value)\n8. GetEncryptedBool(string key, bool defaultValue = false)\n9. SetEncryptedList\u003cT\u003e(string key, List\u003cT\u003e list)\n10. GetEncryptedList\u003cT\u003e(string key)\n11. SetEncryptedVector2(string key, Vector2 vector)\n12. GetEncryptedVector2(string key)\n13. SetEncryptedVector3(string key, Vector3 vector)\n14. GetEncryptedVector3(string key)\n15. DeleteEncryptedKey(string key)\n16. SetEncryptedDictionary(string key, Dictionary\u003cstring, string\u003e dictionary)\n17. GetEncryptedDictionary(string key)\n18. DeleteAllEncryptedData\n19. CompareIntDifference(string key1, string key2)\n20. CompareFloatDifference(string key1, string key2)\n\n#### 1. SetEncryptedInt(string key, int value)\nint型の値を保存するための関数。\u003cbr\u003e\n第１引数はキーの名前(string型)、第２引数は保存する値(int型)\u003cbr\u003e\n戻り値は、なし\n\n#### 2. GetEncryptedInt(string key, int defaultValue = 0)\n保存した値をロードするための関数。\u003cbr\u003e\n第１引数はキーの名前(string型)\u003cbr\u003e\n第２引数はデフォルトの値(省略可能)\u003cbr\u003e\n戻り値は、defaultValue(int型)\u003cbr\u003e\n\u003cbr\u003e\n3~16は基本的に同じなので省略。\u003cbr\u003e\n#### 17. DeleteEncryptedKey(string key)\n指定したキーのデータを削除する関数。\u003cbr\u003e\n第１引数はキーの名前(string型)\n\n#### 18. DeleteAllEncryptedData\nすべてのセーブデータを削除する関数。\n\n#### 19. CompareIntDifference(string key1, string key2)\n二つのセーブデータの差を比較して数値を返す関数。\u003cbr\u003e\n引数はどちらもキーの名前(string型)\u003cbr\u003e\nkey1からkey2を引く形で差の計算をします。\u003cbr\u003e\n\u003cbr\u003e\n20は19と基本的に同じなので省略。\u003cbr\u003e\n\n## リファレンス\n\n```cs\nusing UnityEngine;\nusing AES; // AESCoreを使用するには必須の名前空間\n\npublic class Exsample : MonoBehaviour\n{\n    void Start()\n    {\n        // 数値を保存\n        AESCore.SetEncryptedInt(\"score1\", 120);  // score1 に 120 を保存\n        Debug.Log(\"スコア1に保存しました：\" + AESCore.GetEncryptedInt(\"score1\"));\n        AESCore.SetEncryptedInt(\"score2\", 150);  // score2 に 150 を保存\n        Debug.Log(\"スコア2に保存しました：\" + AESCore.GetEncryptedInt(\"score2\"));\n\n        // int 型の比較と差を計算\n        int intDifference = AESCore.CompareIntDifference(\"score1\", \"score2\");\n        Debug.Log($\"score1 と score2 の差: {intDifference}\");\n\n        // データを削除\n        AESCore.DeleteEncryptedKey(\"score1\");\n\n        // データをすべて削除\n        AESCore.DeleteAllEncryptedData();\n    }\n}\n```\n```cs\nusing UnityEngine;\nusing AES; // AESCoreを使用するには必須の名前空間\n\npublic class Exsample : MonoBehaviour\n{\n    void Start()\n    {\n        // Bool型のデータ保存と取得\n        AESCore.SetEncryptedBool(\"isGameOver\", true);  // GameOverフラグを保存\n        bool isGameOver = AESCore.GetEncryptedBool(\"isGameOver\");\n        Debug.Log($\"Is Game Over: {isGameOver}\");\n\n        // List\u003cint\u003eの保存 int型以外でも可能\n        List\u003cint\u003e scoreList = new List\u003cint\u003e { 100, 200, 300 };\n        AESCore.SetEncryptedList(\"scoreList\", scoreList);\n        List\u003cint\u003e loadedScores = AESCore.GetEncryptedList\u003cint\u003e(\"scoreList\");\n        Debug.Log($\"Loaded Score List: {string.Join(\", \", loadedScores)}\");\n\n        // Vector2の保存\n        Vector2 myVector2 = new Vector2(1.5f, 3.0f);\n        AESCore.SetEncryptedVector2(\"myVector2\", myVector2);\n        Vector2 loadedVector2 = AESCore.GetEncryptedVector2(\"myVector2\");\n        Debug.Log($\"Loaded Vector2: {loadedVector2}\");\n\n        // Vector3の保存\n        Vector3 myVector3 = new Vector3(1.5f, 3.0f, 5.0f);\n        AESCore.SetEncryptedVector3(\"myVector3\", myVector3);\n        Vector3 loadedVector3 = AESCore.GetEncryptedVector3(\"myVector3\");\n        Debug.Log($\"Loaded Vector3: {loadedVector3}\");\n    }\n}\n```\n```cs\nusing UnityEngine;\nusing AES; // AESCoreを使用するには必須の名前空間\n\npublic class DictionaryExsample : MonoBehaviour\n{\n    void Start()\n    {\n        // 辞書型データを作成\n        Dictionary\u003cstring, string\u003e playerData = new Dictionary\u003cstring, string\u003e()\n        {\n            { \"name\", \"Player1\" },\n            { \"score\", \"100\" },\n            { \"level\", \"5\" }\n        };\n\n        // 辞書型データを保存（暗号化されている場合は暗号化されて保存される）\n        AESCore.SetEncryptedDictionary(\"playerData\", playerData);\n\n        // 保存したデータを読み込む（暗号化されていれば復号化されて読み込まれる）\n        Dictionary\u003cstring, string\u003e loadedData = AESCore.GetEncryptedDictionary(\"playerData\");\n\n        // 読み込んだデータを表示\n        foreach (KeyValuePair\u003cstring, string\u003e entry in loadedData)\n        {\n            Debug.Log($\"{entry.Key}: {entry.Value}\");\n        }\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmixtuti%2Faes_save-for-unity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmixtuti%2Faes_save-for-unity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmixtuti%2Faes_save-for-unity/lists"}