Unityで「あのコンポーネント、どこに付けた?」をすぐ探す方法 ― Hierarchy検索を使いこなそう

広告

Unityでゲームを作っていると、こんなことがありませんか?

「AudioSourceを付けたはずだけど、どのGameObjectだったかな?」

小さなシーンならHierarchyを上から順番に見ていけば見つかります。

しかし、GameObjectが何十個、何百個と増えてくると、それでは大変です。

どのGameObjectにAudioSourceを付けたか分からず困っているイメージ

そんなときに便利なのが、Hierarchyの検索機能です。

今回は、特に便利な

t:AudioSource

という検索方法を中心に、UnityのHierarchy検索について見ていきます。

AudioSourceが付いているGameObjectを探してみよう

たとえば、シーンのどこかに AudioSource コンポーネントを付けたとします。

ところが、どのGameObjectに付けたのか分からなくなってしまいました。

そんなときは、Hierarchy上部の検索欄に次のように入力します。

t:AudioSource
Hierarchyの検索欄にt:AudioSourceと入力してAudioSourceが付いたGameObjectに絞り込んだ例

すると、

AudioSourceコンポーネントが付いているGameObject

だけに絞り込めます。

AudioSource に限りません。

たとえば、

t:Camera

ならCameraコンポーネント、

t:Rigidbody

ならRigidbodyコンポーネント、

t:BoxCollider

ならBoxColliderコンポーネントを持つGameObjectを探せます。

Unity公式マニュアルでも、Hierarchy検索のコンポーネント型検索には t: が使われています。

入力するときの注意点です。型名は最後まで入力してください。Unity 6.3 LTS(6000.3)のHierarchyで試したところ、t:Audio のように途中までの入力では何も表示されませんでしたが、t:AudioSource と最後まで入力するとAudioSourceが付いたGameObjectが表示されました。なお、大文字・小文字は区別されず、t:camera でもMain Cameraが見つかりました。虫眼鏡アイコンから「Type」を選び、一覧からコンポーネントを選択する場合は、型名を最後まで入力する必要はありません。

t: の「t」はType

ここで出てくる

t:

は、Type(型)を指定するための検索トークンです。

つまり、

t:AudioSource

は、

「AudioSourceという型のコンポーネントを持っているGameObjectを探して」

という意味だと考えると分かりやすいでしょう。

AudioSourceだけ入力するのとは何が違う?

ここは初学者が少し迷いやすいところです。

AudioSourceの文字列検索とt:AudioSourceのコンポーネント検索の違い

Hierarchyの検索欄に、

AudioSource

とだけ入力する場合と、

t:AudioSource

と入力する場合では、検索条件が違います。

名前を探したい

たとえば、GameObject名が

AudioSourceManager

なら、

AudioSource

という文字列から見つけることができます。

一方、

Player

という名前のGameObjectにAudioSourceコンポーネントが付いていたとしても、

「GameObjectの名前」だけを対象に探している状態では、AudioSource という名前からPlayerを見つけることはできません。

コンポーネントを探したい

そこで、

t:AudioSource

とします。

これならGameObjectの名前が

Player
Enemy
BGM
Main Camera

のどれであっても、

AudioSourceコンポーネントが付いているかどうか

を条件に検索できます。

「名前を探しているのか」

「付いているコンポーネントを探しているのか」

を区別すると理解しやすくなります。

虫眼鏡アイコンから指定することもできる

検索文字を覚えていなくても大丈夫です。

Hierarchyの検索欄にある虫眼鏡アイコンから、検索条件を選択することもできます。

Unityの公式マニュアルでも、検索フィールドの虫眼鏡アイコンから検索条件を選択できることが説明されています。

慣れないうちは虫眼鏡から検索し、

慣れてきたら

t:AudioSource

と直接入力する、

という使い方でもよいでしょう。

t:以外にも検索条件がある

Hierarchy検索では、t: 以外にも便利な検索トークンがあります。

代表的なものを見てみましょう。

検索意味例
t:コンポーネントの型t:AudioSource
id:Instance IDid:210
path:Hierarchy上のパスpath:Player/Weapon
tag:Tagtag:Player
layer:Layerlayer:8
sizeGameObjectのボリュームサイズ(AABBの体積)size>5

これらはUnityのHierarchy検索で用意されている検索条件です。

tag: ― Tagから探す

たとえばPlayerタグが設定されているGameObjectを探したい場合です。

tag:Player

と入力します。

すると、Playerタグを持つGameObjectを絞り込めます。

たとえば、

Player
PlayerBody
Hero

という名前であっても、TagがPlayerなら検索対象になります。

layer: ― Layerから探す

Layerでも検索できます。

たとえばLayer 8に設定されているGameObjectなら、

layer:8

です。

ここで注意したいのは、公式マニュアルのHierarchy検索ではLayer名ではなくLayer番号を指定する形式として説明されていることです。

path: ― Hierarchy上の場所から探す

Hierarchyが複雑になってくると、親子関係から探したいこともあります。

たとえば、

Player
 └ Weapon

という構造なら、

path:Player/Weapon

のようにHierarchy上のパスを条件に検索できます。

より大きなシーンになってくると便利な検索方法です。

id: ― Instance IDから探す

GameObjectにはUnity内部で使われるInstance IDがあります。

たとえば、

id:210

なら、Instance IDに「210」を含むGameObjectを検索します。

さらに、

id=21064

のように = を使うと、Instance IDが完全一致するものを検索できます。

普段の初心者向け制作では使用頻度は高くありませんが、デバッグなどでは役立つことがあります。

:と=の違いにも注目

Hierarchy検索では、

:

と

=

の違いが重要になる場合があります。

たとえば公式マニュアルでは、

path:Wall5/Br

なら、その文字列を一部に含むパスを検索します。

一方、

path=/Structures/Wall5/Brick

なら、そのシーンパスに完全一致するGameObjectを検索します。

まずは、

:

は「含んでいるものを探す」

=

は「ぴったり一致するものを探す」

くらいの感覚で覚えておくとよいでしょう。

実はさらに便利な検索もある

Unity 6では、GameObjectのHierarchy上の状態から検索することもできます。

is:child、is:leaf、is:rootの意味の一覧

たとえば、

is:child

子GameObjectだけを検索します。

is:leaf

子を持たないGameObjectだけを検索します。

is:root

親を持たない、つまりシーン直下のRoot GameObjectだけを検索します。

大きなHierarchyを整理するときには便利な機能です。

ただし、初めてUnityを学習している段階では、ここまで全部覚える必要はありません。

初学者なら、まずこの3つで十分

最初は次の3つを覚えておけば十分でしょう。

t:AudioSource

コンポーネントから探す

tag:Player

Tagから探す

layer:8

Layerから探す

特に、

t:

は覚えておくと非常に便利です。

まず覚えたい3つの検索 t:AudioSource、tag:Player、layer:8

「どこに付けた?」は検索すればいい

Unityを学び始めると、

「AudioSourceをどこに付けた?」

「Rigidbodyはどれ?」

「Colliderが付いているGameObjectは?」

という場面がよくあります。

そんなとき、Hierarchyを一つずつ開いて確認する必要はありません。

たとえば、

t:AudioSource
t:Rigidbody
t:BoxCollider

と検索すれば、すぐに見つけられます。

Unityでは、

覚えて探し回るより、検索する

という習慣を身につけることも大切です。

まとめ

Hierarchyの検索欄は、単にGameObject名を探すだけではありません。

検索トークンを使えば、

t:
tag:
layer:
path:
id:

など、さまざまな条件からGameObjectを探せます。

特に覚えておきたいのが、

t:AudioSource

です。

これは、

AudioSourceコンポーネントを持っているGameObjectを探す

という検索です。

Unityのシーンが大きくなるほど、この検索機能は便利になります。

「どこに付けたか分からない!」

となったときは、Hierarchyを全部開いて探す前に、

まず検索欄を使えないか考えてみましょう。

訪問数 1 回, 今日の訪問数 1回

広告

Unity,小技

Posted by hidepon