TopDown Engine はトップビュー(見下ろし型)のゲームを作るための Unity のアセットです。
その中のコンポーネントがサンプルシーンの中でどのように用いられているかを調べるために、二つのエディタ拡張を利用しました。
がゲームオブジェクトのコンポーネントに設定されていました.png)
今回は具体例として TopDown Engine の ChargeWeapon というコンポーネントが、どのプレハブで使われているかと、そのプレハブがどのシーンで使われているかを、それぞれのエディタ拡張を利用して検索する手順を紹介します。
※ Unity のバージョン 2021.3.25f1、 TopDown Engine のバージョンは 3.2 です。
コンポーネントを持つプレハブの検索
TopDown Engine にはたくさんのサンプルゲームがあります。
しかし、サンプル用のプレハブもたくさんあり、ChargeWeapon がどのプレハブで使われているかを手動で探すのは手間がかかるので、公開されているエディタ拡張を導入し検索します。
SearchForComponents.cs の準備
他サイト様のページで、.cs ファイルを配置するだけで利用できるエディタウィンドウが紹介されていたのでそれを使います。
参照:「【Unity】指定したコンポーネントがアタッチされたプレハブを検索できるエディタ拡張「SearchForomponents.cs」紹介 – コガネブログ」
「EDITOR: Want to check all prefabs in a project for an attached MonoBehaviour – Unity Forum」の中に「SearchForComponents.cs」のコードが掲載されているので、コピーして同名のファイル名で保存して、 Unity プロジェクトの Assets フォルダ内の任意の Editor フォルダ内に配置しましょう。

SearchForComponents ウィンドウの利用
メニューに EDITORS が追加されたら、そのサブメニュー SearchForComponents を選択します。

SearchForComponents のウィンドウが表示されたら、 None (Mono Script) が選択されているフィールドの右側のボタンを押します。
SelectMonoScript というダイアログが隣に表示されたら、検索ボックスで探したい Component の名前を入力し、 Assets 欄に表示されたらそれを選択します。

None (Mono Script) だった要素が、選択したコンポーネントに置き換わったら Check component usage ボタンを押します。

数秒すると、検索が完了して、その結果として指定したコンポーネントを持つプレハブが 2 件表示されました。
その右側の Select ボタンを押すと、そのプレハブが Project ウィンドウ内で選択されます。

これで、調べたいコンポーネントを持つプレハブを探すことができました。
プレハブなどのアセットを参照している場所を探す
次は、そのプレハブを使っている場所を探して、シーンを再生してみましょう。
他サイト様「Unityでアセットの参照を高速に調べるツール【ReferenceViewer】|アマガミナブログ」で紹介している unity-reference-viewer を使います。
#他にも試したのですが、検索するためのキャッシュを作成する処理が 2 時間たっても終わる気配がないので諦めました。
注意点
「Unityのguidでアセットの参照を調べる【guidとは?】|アマガミナブログ」に書いてありますが、 Resources.Load 関数でプログラムからアセットを利用する点については検索対象外なので、Resources.Load を使っている箇所は、これとは別に必要に応じて調べると良いでしょう。
unity-reference-viewer のダウンロードと配置
「GitHub – ina-amagami/unity-reference-viewer: Unityアセット参照検索ツール / Asset reference search for Unity」の Code ボタンを押した後に Download ZIP でダウンロードし、その .zip を解凍しましょう。

解凍したフォルダをリネームなどしてから、 Unity プロジェクトの任意の Assets フォルダ内に配置します。

unity-reference-viewer の実行
unity-reference-viewer を実行するには、Project ウィンドウで対象となるアセットを右クリックし、ポップアップメニューの Find Refrences In Project → By FindStr を選択します。
※ Git で管理している場合は By GitGrep を選択するとより高速に検索できるようです。

検索の結果、どこでも使われていない場合は、検索対象のアセットのみ表示されます。

さきほど見つけたもう一つのプレハブで同様に検索するとヒットしました。
検索結果の scene をクリックすると Project ウィンドウで選択されました。

その scene を開くと、ゲームオブジェクトのコンポーネントの中に、検索対象のプレハブが設定されていました。
がゲームオブジェクトのコンポーネントに設定されていました.png)
まとめ
今回は、Unity プロジェクト内で任意のコンポーネントがどこで使われているかを調べる SearchForComponents 、プレハブなどのアセットがどのシーンで参照されているかを高速で調べる unity-reference-viewer エディタ拡張の導入から実行結果までを紹介しました。
これにより、コンポーネントやプレハブがどこで使われているかを探す手間が減り、開発や調査の効率の向上が期待できます。
参照サイト Thank You!
- Unity のリアルタイム開発プラットフォーム | 3D/2D、VR/AR のエンジン
- TopDown Engine | システム | Unity Asset Store
- 【Unity】指定したコンポーネントがアタッチされたプレハブを検索できるエディタ拡張「SearchForComponents.cs」紹介 – コガネブログ
- EDITOR: Want to check all prefabs in a project for an attached MonoBehaviour – Unity Forum
- Unityのguidでアセットの参照を調べる【guidとは?】|アマガミナブログ
- Unityでアセットの参照を高速に調べるツール【ReferenceViewer】|アマガミナブログ
- GitHub – ina-amagami/unity-reference-viewer: Unityアセット参照検索ツール / Asset reference search for Unity
記事一覧 → Compota-Soft-Press
コメント