5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AssemblyDefinitionについて

Posted at

はじめに

AssemblyDefinitionはUnity2017.3に追加された新機能です。
簡単に導入できて、外部アセットを分離しておくと良さそうなので記事にしました。

Unity - Manual: Script compilation and assembly definition files

Assembly Definitionとは

AssemblyDefinitionは、Assembly-CSharp.dllを複数のアセンブリに分離することができます。

ScriptCompilation.png

依存関係を持つため、以下のような状態になります。

  • Main.dllは、Stuff.dllとThirdParty.dllに含まれるクラスなどを利用できます。
  • Stuff.dllは、Library.dllに含まれるクラスなどを利用できます。
  • ThirdParty.dllとLibrary.dllは、それぞれ自身の持つクラスなどのみを利用できます。

アセンブリが別れているため、ビルド時間が短縮されます。
Stuff.dllのクラスを変更した場合、Stuff.dllとそれを参照しているMain.dllがビルドされます。
ThirdParty.dllやLibrary.dllは変更の影響を受けないため、ビルドの対象にはなりません。

使い方

使い方はとても簡単です。

  1. 対象にしたいフォルダ以下にAssemblyDefinitionのファイルを作成する。
  2. 参照関係を設定する。
  3. ビルド時に含める範囲を指定する。

usecase-1.jpg
usecase-2-3.jpg

スクリプトファイルを選択するとどのアセンブリに含まれるのかが表示されます。

fileA.jpg

依存関係があるため、MainAからMainB、StuffA、ThirdPartyAは利用できますが、LibraryAは利用できません。

build-error.jpg

よかったこと

  • ビルド時間が短縮された。

    変更のあるアセンブリだけがビルド対象のため、ビルド時間が短縮されました。
  • アーキテクチャを物理的に設定することができる。

    例えばMVCでアプリを作成している場合、ControllerはModelとViewを参照する、ViewはModelのみ参照する、Modelは何も参照しない、という構造が作成できます。

注意点

  • Editorフォルダなどにも適応する必要がある。

    Editorフォルダ以下のファイルもAssemblyDefinitionの影響を受けます。

    Runtimeに含まれない用にするため、Editor用にAssemblyDefinitionを追加する必要があります。
5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?