はじめに
もう遅いですが明けましておめでとうございます。今年もよろしくお願いいたします。
表題の通り、Assembly Definitionで細かくアセンブリを分割したいときにUniVRMの中身はどう設定すればいいかという記事です。
今回はUniVRMですが、サードパーティー製のAssetを追加するときに概ね同じ方法でいけると思います。
ソフトウェア | バージョン |
---|---|
Unity | 2018.3.0f2 |
UniVRM | 0.48 |
そもそもAssembly Definitionって何?と言う方はテラシュールブログさんのコチラの記事が参考になると思います。めっちゃ便利な機能なので使った方がいいです。
【Unity】Assembly Definition Filesという神機能
VRM全体のAssembly Definition設定
UniVRMをインポートすると0.48では画像のようなフォルダ構成になっていると思います。

まずVRM全体のAssembly Definitionを作ります。

これでUnity Editor上ではエラーなく使えるのですが、このままビルドすると一つのアセンブリにEditorScriptが入ってしまい、ビルドエラーが起きてしまいます。
Assembly Definitionを使う上での最大の注意点として、Unity Editor上では問題無く動いているが、ビルドをするとエラーが顕在化かします。なのでAssembly Definitionを設定するときはこまめにビルドを行い問題が無いか確認するのがお勧めです。
EditorスクリプトのAssembly Definition設定
続いてEditorScript用のAssembly Definitionを作ります。
VRMフォルダの配下群には多数のEditorフォルダがあるので一つずつAssembly Definitionを作っていきます。

このAssembly DefinitionはEditorScriptしか含んでいないのでPlatformsはEditorのみ有効にします。
また、VRMのコードを参照しているのでAssembly Definition ReferencesにVRMのAssemblyを登録します。

UniVRMは深い階層にもEditorフォルダがあったりするので、Buildをしてエラーが出たらそのフォルダに行ってAssembly Definition作りに行くという作業方法でも良いと思います。てか私がそうしてます。
画像ではUniVRM>Script>BlendShape>EditorにAssembly Definitionを忘れててエラーが出ています。

Test系のAssembly Definition設定
全てのEditorフォルダにAssembly Definitionを作り終わると、Console上にTest系のエラーのみが残ります。

Testが含まれてるものはAssembly DefinitionのTest Assemblliesを有効にすることで参照できるようになります。

ここまで設定すると、Console上からエラーが消えますのでビルドを行います。
参照系のAssembly Definition設定
するとまたエラーがでてきますのでコレを解決していきます。 今回のエラーはUniGLTFを参照できねぇよっていうエラーなのでAssembly DefinitionのReferenceに該当のAssemblyを追加して参照できるようにしてあげます。

参照を追加するとこんな感じです。

あとはこの作業をループで続けていきます。
- ビルドする
- エラーがでる
- エラーを解決する
- 最初に戻る
これをビルドが成功するまで続けます。
まとめ
以上でUniVRMのAssembly Definition設定は終了です。泥臭い方法ですが、ひたすらBuild&ErrorDestroyが一番確実に早く設定できる方法だと思います。
UniVRMに限らずサードパーティー系のAssetは大体この方法で攻略できると思うので頑張ってAssembly Definitionを使っていきましょう!