渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

AssemblyDefinitionのイケてないところがわかってきた件


f:id:esakun:20150730215258g:plain

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

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

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)

※Coreというassembleは無いよ!!!というエラー

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

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

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

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

まとめ

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

今後に期待です。

環境

  • Unity2018.2.5f1