はじめに
今回はマネージプラグインのGeneral/Validate References
設定項目について書きたいと思います。
その前に
マネージプラグインとネイティブプラグイン
Unityのプラグインにはマネージプラグインとネイティブプラグインの2種類があります。
- マネージプラグイン :
.dll
にコンパイル済みの.NET アセンブリ - ネイティブプラグイン : C、C++、Objective-C などの言語で記述できるネイティブコードのライブラリ
// マネージプラグイン
マネージプラグインとは、.NET アセンブリ を作成し、Visual Studio などのツールで Unity の外部でコンパイルして動的リンクライブラリ (DLL) にしたものです。
これは、ソースファイルとして Unity プロジェクトの Assets フォルダーに格納する標準的な C# スクリプトとは処理が異なります。Unity は標準的な C# スクリプトを変更するたびにコンパイルしますが、DLL は事前にコンパイルされているので変わりません。コンパイルされた .dll ファイルをプロジェクトに追加し、それが含むクラスを ゲームオブジェクト に、標準のスクリプトと同じ方法でアタッチすることが可能です。
...
マネージプラグインには .NET コードのみが含まれているため、.NET ライブラリでサポートされていない機能にアクセスできません。ただし、マネージコードは Unity がスクリプトのコンパイルに使用する標準の .NET ツールにアクセスできます。
// ネイティブプラグイン
Unity はネイティブプラグインをサポートしています。これは、C、C++、Objective-C などの言語で記述できるネイティブコードのライブラリです。プラグインを使用すると、C#で記述したコードからこれらのライブラリの関数を呼び出すことができます。この機能により、Unity はミドルウェアライブラリや既存の C/C++ コードと統合できます。
ネイティブのプラグインは、C# スクリプトが他のユーザースクリプトにアクセスする簡単な C インターフェースを提供します。また、 ある低レベルのレンダリングイベントが発生したとき (例えば、グラフィックススデバイスを作成したときなど) に、ネイティブプラグインによってエクスポートされた関数を呼び出すことも可能です。詳しくは、低レベルのネイティブプラグインインターフェース を参照してください。
Auto Referenceとは
Unity がプロジェクト用に作成した事前定義されたアセンブリ(Assembly-CSharp)から参照するかどうかを設定します。つまり自身で.asmdef
を配置しない場合は、Auto Reference
がON
でなければ利用することができません。
.asmdef
のAuto Reference
と同じ意味ですね。
Validate Referencesとは
プラグインの参照がプロジェクト内で利用可能か確認します。具体的には以下の2つですね。
- プラグインが参照するプラグインが存在しているか
- 参照先のプラグインのバージョンが適切か(厳密にバージョン一致 か
or newer
が要検証)
またValidate References
がOFF
の場合はこれらの検証がエディタで行われず、ランタイムでエラーが発生する可能性があります。
Unityでは、プラグインの参照がプロジェクト内で利用可能かどうかを確認することができます。この検証を行わないと、欠落した参照が使用されそうになると、ランタイムエラーが発生する可能性があります。
また参照先のプラグインのバージョンの検証のみOFF
にしたい場合はProject Settings -> Player -> Other Settings -> Configurations
よりAssembly Version Validation
を無効すればOKです。(ただしUnity2021.3.0f1にあるのは確認できましたが、Unity2022.3.10f1では確認できませんでした)