LoginSignup
2
2

More than 1 year has passed since last update.

Easy SaveとAssembly Definitionの注意点

Posted at

はじめに

UnityにはAssembly DefinitionというC#のビルドファイルを分割して出力できる機能があります。
詳細は「Unity Assembly Definition 完全に理解した」を参照してください。

Easy SaveはUnityで簡単にセーブ・ロード・暗号化が実装できるアセットです。

さて、現在Assembly Definitionを切りまくっている自分のUnity ProjectでEasy Saveを活用していた所、幾つかハマりポイントを発見したので共有します。

一般的なエラーはKanさんのブログを参照してください
Easy Saveを使ってるうちに遭遇するかもしれない、いくつかのエラーとその対処法【Unity】【アセット】【Easy Save】【トラブルシューティング】

Easy SaveにAssembly Definitionを追加する

Easy Saveは標準ではAssembly Definitionを追加していないため、Assembly Definitionを切っているアセンブリ内でEasy Saveの機能を追加するには、自分でAssembly Definitionを追加しなければなりません。

それでは、Assets/Plugins/EasySave3/Scripts内にES3という名称でAssembly Definitionファイルを作成します。Assets/Plugins/EasySave3/Editor内にはES3.Editorという名称でAssembly Definitionファイルを作成し、Assembly Definition ReferencesにES3.asmdefを追加しましょう。
image.png

しかしこのままだと、どんな型の値を保存しようとしても
ES3Type for primitive could not be found, but the type list has been initialised and is not empty. Please contact Easy Save developers on mail@moodkie.com

というエラーが出てしまいます。
このエラーを解決するには、Assets/Plugins/EasySave3/Resources/ES3/ES3Defaults.assetを選択し、Assembly Namesに今回追加したAssembly Definitionファイルの名前(今回はES3)を追加しないといけません。
image.png

保存済みの型のnamespaceかAssembly Definitionファイルを改名する

Easy Saveでは値のセーブ時に、stringのkeyだけでなくnamespaceとアセンブリ名も使用しています。
そのため、既にセーブしてあるクラスや構造体のnamespaceやアセンブリ名(Assembly Definitionファイル名)を変えた場合、keyは一致するがnamespaceかAssembly Definitionファイルが異なるため
System.InvalidOperationException: Trying to load data of type 保存対象の型, but data contained in file is type ofというエラーが発生して、読み込み処理ができなくなります。

この場合はes3ファイルを直接書き換えるか、作り直す必要があります。

2
2
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
2