こんにちは、Unityエンジニアのオオバです。

Unity2017.3のAssembly Definitionがコンパイル時間短縮の救世主になりそうな予感
以前このようなAssemblyDefinitionは神だ!!という記事を書きましたが、実際その神を運用してみて分かってきたことがあります。

今回紹介するのはAssemblyDefinitionのイケていないところ2選。

👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

1.依存関係が文字列参照

AssemblyDefinitionのファイル(.asmdef)の中身を見ると、以下のようなJSON形式になっています。ModuleCoreを参照していることが読み取れます。

{
    "name": "Module",  
    "references": [  
        "Core"  
    ],  
    "optionalUnityReferences": [],  
    "includePlatforms": [],  
    "excludePlatforms": [],  
    "allowUnsafeCode": false  
}

重要なのはnamereferences部分で、なぜか文字列参照です。
ということは、Coreのnameが変わると依存関係が壊れてしまい以下のようなコンパイルエラーを吐きます。

Assembly has reference to non-existent assembly 'Core' (Assets/Module.asmdef)  

文字列参照してもよいのですが、nameを変更しても自動で依存関係を保持してもらいたいところです。

2.ぶっちゃけあまり効果を感じない

ディレクトリ構成やらファイル構成やらいろいろ頑張ってAssemblyDefinition対応したにもかかわらず、そこそこソースコード増えてもあまり効果を体感ベースで感じません。

少しは早くなっているかもしれませんが、苦労した割には...

まとめ

個人的には現段階ではAssemblyDefinitionを導入しない方が良いかなっていう印象です。
苦労に見合わない感じです。

今後に期待です。

オススメ記事
検証環境