【Unity】GameObjectメニューのCreate Emptyについて解説【初心者向け】

【Unity】GameObjectメニューのCreate Emptyについて解説【初心者向け】

メニューバーの『GameObject』から作成できるGameObjectの種類について解説するシリーズ。

今回は「Create Empty」と「Create Empty Child」について解説を行います。

Transformを持つだけのシンプルなGameObjectですが、非常に使用用途が多いという素敵なGameObjectでもあります。

 

環境

macOS 10.14 Mojave

Unity2018.3.14f1

Unity Hub 1.6.2

メニューバーの『GameObject』について

『GameObject』は画面左から5番目、『Assets』と『Component』に挟まれています。

左から5番目にあるのだポッター
左から5番目にあるのだポッター

 

個々のGameObject作成に関してはそれぞれ別記事として作成し、それ以外の項目については以下の記事で解説を行なっています。

 

この記事では以下の項目を解説していきます。

Create Empty
Create Empty

 

Create Empty

Transformコンポーネントだけを持つ「空の」GameObjectを作成します。

Transformだけ存在する
Transformだけ存在する

 

GameObjectを作った直後はTransformのPositionには何らかの値が入っていることが多いので、コンポーネントの右上にあるメニューボタンから[Reset]を選択して初期化しておくのがおすすめ。

Resetは鉄則
Resetは鉄則

 

これで扱いやすくなりました。空のGameObjectは主に親要素として使うことが多く、子要素ではこのオブジェクトの位置空の相対位置が使われるため、分かりやすい値にしておくと良いでしょう。

綺麗になった
綺麗になった

 

Mesh RendererやSprite Rendererなど、ほにゃららレンダラーのコンポーネントがないため、画面には描画されません。しかしTransformコンポーネントを持つことから、SceneビューではTransformのPositionなどを変更できる赤や緑の矢印が表示されています。

見えないけどいる
見えないけどいる

Create Empty Child

選択しているGameObjectの子要素として空のGameObjectを作成します。何も選択していない場合は最上位の階層にGameObjectを作成します。

試しに上で作成した「CreateEmptyObj」を選択した状態で、[GameObject] -> [Create Child Empty]から子要素を作成します。画像のように、1つ下の階層にGameObjectが作成されました。

子要素ができた
子要素ができた

 

こちらのGameObjectも[Create Empty]の時と同様にTransformコンポーネントだけを持っています。

こちらも空のGameObject
こちらも空のGameObject

 

Hierarchyウィンドウで右クリックした時に表示されるコンテキストメニューでは『Create Child Empty』が存在しないため、メニューバーから作成する必要があります。

Create Emptyしかない
Create Emptyしかない

 

空のGameObjectの使い道

一見何の役にも立たないオブジェクトのようにも思えますが、結構重要なんです。

親要素として使う

いくつかのGameObjectをまとめる親要素として使うことができます。例えば以下のようにスプライト画像を表示するGameObjectをまとめることができちゃいます。

オブジェクトをまとめる
オブジェクトをまとめる

 

同じカテゴリのオブジェクトをまとめることで、Hierarchyウィンドウでの整理が簡単になります。上の画像で親要素の左側に表示されている折りたたみマークをクリックすれば、子要素を隠せます。Hierarchyウィンドウをスッキリさせておいたほうが目的のオブジェクトを探しやすいですからね。

折りたたんでスッキリ
折りたたんでスッキリ

 

また、親要素を非アクティブにすることで、子要素も非アクティブの状態になります。一度に画面から消したい時には親要素を非アクティブにするだけでいいので楽ちん。

 

親要素として使うメリットは他にもあって、子要素の位置を一度に動かせるんです。

例えば以下のBeforeのようにスプライト画像が並んでいて、親オブジェクトがこれをまとめている状態を考えます。親オブジェクトが存在しない場合は6つのGameObjectを全て自力で移動させる必要がありますが、親オブジェクトがいる場合はそれを動かすだけでAfterのように全体が動くんです。

一気に動かせる
一気に動かせる

 

上の方でちょっと触れましたが、GameObjectが親子関係になっているとき子要素となるGameObjectでは、親要素のGameObjectが持つTransformからどれだけずれているか、その相対位置を持っています。位置だけではなく、回転、スケールも同様です。

例えば親GameObjectのTransformのPositionが(0, 0, 0)で、子GameObjectのTransformのPositionが(1, 1, 1)だったとします。これは「親の座標から(1, 1, 1)ずれています」という状態を表します。

このとき、親の位置を(3, 3, 3)に変えると、子GameObjectのTransformでは(1, 1, 1)となっているままですが、画面上では(4, 4, 4)の位置にいます。親の位置を基準に、自分の位置を計算しているわけですね。

UIを画面に表示する場合は、空のGameObjectで整理して、位置を一度に動かして……と特によく使います。

スクリプトを持たせるGameObjectにする

私がよく使うのが、スクリプトを持たせるためのGameObjectにすること。

主にそのシーン全体の動作をまとめるManager的なスクリプトを用意する時に使います。

「空のGameObjectでいいや」と判断する基準は、RigidbodyやColliderなど、他のコンポーネントの情報が必要かどうかです。画面に描画する必要もないし、特にコンポーネントもいらないときは空のGameObjectで十分なんです。

後から何かのコンポーネントが必要になった場合は、『Add Component』で追加できるのも良い点です。

まとめ

「Create Empty」と「Create Child Empty」についての解説でした。

Hierarchyウィンドウの整理、子要素をまとめて操作する、スクリプトをアタッチする土台にする、などなど。使用用途が広いのがこの空のGameObjectです。

Hierarchyウィンドウの整理は特にUIを作成する時に重要です。パーツごとにまとめておかないと大変な状況になりますからね。

アセット作ってます!

CTA-IMAGE

Unityでの開発に役立つアセットを作っています。

3DダンジョンRPGを開発するスピードを200%加速するAssetや、ファンタジーRPGのダンジョンを彩るパーツを取り揃えています。

特に3DダンジョンRPGのゲームを1から作るのは結構時間がかかります。ダンジョン部分の作成はこうしたアセットを使って、開発をブーストさせてみませんか?