🚀

UnityのAssemblyDefinitionの推奨設定とその理由

2023/04/07に公開

UnityのAssembly Definitionの推奨設定とその理由の解説(メモ)です。

4のところでハマることが多かったのが主な動機ですが。

どちらかというとAssemblyDefinitionを使いこなしている方向けですが、普段なんとなく設定しているという方にも参考になるかもしれません。

1. Allow 'unsafe' Code -> false

基本falseで、unsafeを触る時だけtrueにします。

2. Auto Referenced -> false(可能なら)

基本falseが望ましいですが、いろんな人に使ってもらうライブラリの場合はtrueにする場合もあります。

falseにすると利用者側もAssembly Definitionの作成が必須になりますが、Unity初心者の方だと扱えない場合もあるためです。

3. No Engine References -> true(可能なら)

UnityのAPIに依存しない、Pure C#なスクリプトしか含まれていない場合はtrueにできます。

そうでない場合はfalseに設定します。

4. Override References -> true

falseのままだと、プロジェクトに含まれているDLLで Auto Reference に設定されているものが自動的に参照されます。

特に注意が必要なのが、Test Frameworkを利用する時に付いてくる nunit.framework で、RiderでAssertionのコードを書いているとRuntime向けのスクリプトに時々間違ってNUnitのAssertionが混入してしまう場合があります。

このDLLへの参照がRuntime向けのスクリプトにあるままだと、アプリケーションのビルド時に失敗しますが、Riderだとusing部分を自動で隠してくれるためビルド時に初めて気づく場合も多く注意が必要です。

trueに設定し、必要なDLL参照をAssembly Referencesの項目に手動で設定する運用がおすすめです。

5. Use GUIDs -> true

falseだとassemblyDefinitionのリネームで参照が剥がれてしまいます。

Discussion