はじめに
AssemblyDefinitionはUnity2017.3に追加された新機能です。
簡単に導入できて、外部アセットを分離しておくと良さそうなので記事にしました。
Unity - Manual: Script compilation and assembly definition files
Assembly Definitionとは
AssemblyDefinitionは、Assembly-CSharp.dllを複数のアセンブリに分離することができます。
依存関係を持つため、以下のような状態になります。
- Main.dllは、Stuff.dllとThirdParty.dllに含まれるクラスなどを利用できます。
- Stuff.dllは、Library.dllに含まれるクラスなどを利用できます。
- ThirdParty.dllとLibrary.dllは、それぞれ自身の持つクラスなどのみを利用できます。
アセンブリが別れているため、ビルド時間が短縮されます。
Stuff.dllのクラスを変更した場合、Stuff.dllとそれを参照しているMain.dllがビルドされます。
ThirdParty.dllやLibrary.dllは変更の影響を受けないため、ビルドの対象にはなりません。
使い方
使い方はとても簡単です。
- 対象にしたいフォルダ以下にAssemblyDefinitionのファイルを作成する。
- 参照関係を設定する。
- ビルド時に含める範囲を指定する。
スクリプトファイルを選択するとどのアセンブリに含まれるのかが表示されます。
依存関係があるため、MainAからMainB、StuffA、ThirdPartyAは利用できますが、LibraryAは利用できません。
よかったこと
- ビルド時間が短縮された。
変更のあるアセンブリだけがビルド対象のため、ビルド時間が短縮されました。 - アーキテクチャを物理的に設定することができる。
例えばMVCでアプリを作成している場合、ControllerはModelとViewを参照する、ViewはModelのみ参照する、Modelは何も参照しない、という構造が作成できます。
注意点
- Editorフォルダなどにも適応する必要がある。
Editorフォルダ以下のファイルもAssemblyDefinitionの影響を受けます。
Runtimeに含まれない用にするため、Editor用にAssemblyDefinitionを追加する必要があります。