【Unity】ScriptがアタッチされているObjectを探す

知らずにいると、人生損します。してました。

うっかりアタッチミス

1個で良いハズのScriptを、別のオブジェクトにもアタッチしちゃうことってありませんか?私だけでしょうか??
なーんかうまく動かないな〜なんて思っていたら、1件しか出ないハズのログが2件出ていたりして。はきゃー、やっちまった!!

・・・なんてことが、過去に何度か。何度もやってるんか、そんな失敗。

どのオブジェクトにアタッチしたっけ?

f:id:s44511173:20200730110145p:plain

あくまで「うっかりミス」なので、どのオブジェクトにくっついてるかわからんのですよ。Hierarchyウィンドウ内のオブジェクト数が少ない間は探す気にもなりますが、ものすんごい大量のオブジェクトがいるときなんて、探す気になんてなれようもない。

スクリプトで犯人探し

そんなとき、今まではこんなスクリプトを書いていました。

void Start()
{
    Debug.Log($"{name}");
}

そうすると、Consoleにアタッチされたオブジェクト名が表示されてくるわけです。

f:id:s44511173:20200730105741p:plain

こんな感じ。これでも十分、犯人探しはできます。

が、しかし。

Find Reference In Sceneで犯人探し

実は、もっと簡単な方法があったんです!!知らないと損!してた!!

ProjectビューでScriptを選択>右クリックメニューからFind Reference In Sceneを選択。これだけで良いんです!!

f:id:s44511173:20200730110529p:plain

こうすると、あらステキ!!!

f:id:s44511173:20200730110614p:plain

さっきまでゴチャゴチャしていたHierarchyビューが絞り込まれて、対象スクリプトがアタッチされたオブジェクトのみ表示されるようになりました!!!すごい!!!

スクリプト以外も探せる

探せるのは何も、スクリプトに限ったことではありません。マテリアルやテクスチャも探せます。マテリアルが増えすぎて、未使用品を整理したいなーなんて時に便利。

結論

  1. Projectビューで選択>右クリックメニュー>Find Reference In Sceneで、アタッチしているオブジェクトを検索できる
  2. Unityの機能は、知らなくてもなんとかなるけど、知ってると効率Up!!(まだまだ知らない機能があるんだろうなぁ・・・汗)