【Unity】アセット間の依存関係が視覚化できるツールを使ってみた

AvatarPosted by

こちらは GRIPHONE Advent Calendar 2021 15日目の記事です。
こんにちは。グリフォンでクライアントエンジニアをしている二間瀬です。

突然ですが、Unityで開発を続けている際に、このような状況になったことはありませんか?

  • もう使わないアセットがあるからプロジェクトから削除したいけど、まだ使われている場所があるか分からなくて消せない
  • いつの間にか参照が Missing になっているプレハブがあってビルドし直すことになった

いずれもアセット間の参照関係に関連し、標準の機能ではなかなか解決しづらい難しい問題です。
今回はそんな時に使えるかもしれない、Unityでアセット間の依存関係を解析できるツール Dependency Viewer を紹介します。

検証環境

Unity2021.2.5f1
Quick Search 3.0.0-preview.22

導入方法

本記事で紹介する機能は、Quick Search というパッケージを拡張するものとなっており、Quick Searchのプレビュー版として提供されているものです。あらかじめご留意ください。

こちらのGitHubのリポジトリのReadMeに則って導入します。
なお、本記事ではUnity2021.2.5f1上で動作確認をしております。動作環境として Unity 2020.3 と 2021.2 以降のいずれのバージョンに対応している、というように記載がありますが、Unity2020.3での動作については確認しておりませんので予めご了承ください。

使い方

Window → Search → Dependency Viewer を選択してウィンドウを表示します。

デフォルトの状態では、選択したGameobjectあるいはアセットの参照・非参照を一覧表示することができます。
ビューに表示されている各アセットをダブルクリックすることで、そのアセットの依存関係を辿っていくことができます。
また、右クリックではそのアセットのパスやGUIDをコピーすることができます。

メニューバーのColumnsでは、TypeやFile Sizeなどの情報を追加表示することができます。

また、デフォルトがSelectionになっている右端のトグルボタンでは、表示するレポートの種類を変えることができます。
例えば Missing Dependenciesを選択すると、プロジェクトで参照されているがアセットに解決されないすべてのGUIDが表示されるようです。

他には、Unused Assetsを選択すれば、下図のようにプロジェクト内で使用されていないアセットの一覧を見ることができます。
一覧で見ることができるのはありがたいですが、Sceneファイルも含まれてしまうのが少し気にはなります。

レポートの種類は他にも数種類用意されていますが、検索したい内容が用意されていない場合は、自分でカスタマイズしたクエリを登録することもできるようです。
詳細はここでは触れませんので、興味がある方はリポジトリのwikiを参照してください。

使用されていないアセットのリストの例

ちなみに、このパッケージのインポートと同時に、Projectウィンドウに表示が追加されます。各アセットの右側に数字が表示されており、これはそのアセットを参照している数を表しています(下図参照)。さらにアセットの右クリックメニューにDepencencies項目が追加されているので、そのアセットの参照・非参照をこちらから調べることもできます(Quick Searchのウィンドウが開きます)。

Projectウィンドウで被参照数が表示されるようになる

なお、アセットの追加・変更がある場合は、Window → Search → Rebuild dependency index を選択して参照関係の情報を最新にする必要があります。

Dependency Graph

リポジトリのwikiには記載ありませんが、これらの依存関係をグラフツリーとして視覚化するツールも利用できるようです。

Window → Search → Dependency Graph Viewer からウィンドウを表示した後、適当なアセットをプロジェクトウィンドウからドラッグ&ドロップすると、以下の図のようにノードが表示されます。
ノードの中には2つポートがあり、左ポートを押すとそのアセットを参照している一覧が、右ポートを押すとそのアセットが参照しているアセットが表示されます。

現時点で確認できる機能はこれだけのようですので、基本的には Dependency Viewer を利用し、視覚化したいという目的があればこちらを利用するという使い分けをするのが良さそうです。

dependency graph viewer で参照関係を展開したグラフの例

まとめ

本記事ではアセット間の参照関係を解析・視覚化するツール Dependency Viewer を紹介しました。

Unity開発ではプロジェクトの肥大化に伴って依存関係を知りたい状況になることがしばしばあると思いますのでそういったときに使用してみるのも良いのではないでしょうか。