5日目 - Unity③

親子関係

Unityではゲームオブジェクトを階層的に管理することができます。

image.png

まとめて複数のゲームオブジェクトを管理しやすくなり、Hierarchyの見やすさも向上します。

上の階層にあるものを親、下の改装にあるものを子と呼びます。

ゲームオブジェクトを子オブジェクトとしたいときはHierarchy上でそのゲームオブジェクトを親オブジェクトとしたいゲームオブジェクト上にドラッグアンドドロップするだけです。

このとき子オブジェクトは親オブジェクトとの相対座標で管理され、親オブジェクトを移動させると子オブジェクトも同じく移動させることができます。

また、Hierarchy上では親オブジェクトの左に表示される三角で子オブジェクトを表示させたり折りたたんだりすることができます。

空のゲームオブジェクト

いままで主にスクリプトを実行するために空のゲームオブジェクトを使用してきたが、そのほかにも多くの活用方法がある。

など

うまく活用するとシーンを管理しやすくなる

↓空のゲームオブジェクトの活用例

image.png

「—————-MR——————」などと名付けた空のゲームオブジェクトを使用することでゲームオブジェクトを役割ごとに区切って分類している。

マネージャー系はすべて空のゲームオブジェクトにアタッチしている。

また、親子関係を使うことでHierarchyでスクロールしなくてもすべて見られるようにしている。

Prefab

同じ機能を持つゲームオブジェクトをたくさん配置したいとき、一つずつコピーするのは面倒くさいし、処理的にも非効率です。しかも、仕様変更したくなったときもすべてのゲームオブジェクトの数値を一つずつ変更しなければならず大変です。

また、ゲーム中にスクリプトでゲームオブジェクトを出現させたいときはどうすればいいのでしょうか?

UnityにはPrefabという機能があります。

試しに取得できるアイテムをPrefabを使用して実装してみようと思います。

シーン上にCubeを作成してください。

image.png

名前はItemにします。

image.png

座標は(0, 0.5, 0)、回転は(45, 0, 45)、大きさは(0.5, 0.5, 0.5)にしてそれっぽくします。Transform

image.png

マテリアルを作成して色を付けます。マテリアル

image.png

image.png

アイテムがボールにぶつかってボールの挙動が変化しないように、ColliderのIsTriggerにチェックを付けます。当たり判定

image.png

当たり判定を取得しやすくするためにタグ(Item)を作成し、付けます。タグ

image.png

このようなアイテムを一つ制作することができました。

image.png

image.png

image.png

Prefab化する

これをPrefab化します。

Prefab化するためにはそのゲームオブジェクトをAssets内にドラッグアンドドロップするだけです。

作成したPrefabsフォルダに移動 Prefabs(プレハブというファイル用)

アイテムをPrefabsフォルダにドラッグアンドドロップする。

gifb.gif

Prefab化したゲームオブジェクトはHierarchy内で青色になる。

image.png

インスタンスを作成する

Prefabをシーンに配置するとそのPrefabをコピーできます。このコピーされたゲームオブジェクトをインスタンスと呼びます。

Prefab化されたアイテムをシーンにたくさん配置してみよう。

Prefab化されたアイテムをHierarchy上にドラッグアンドドロップする。

gifc.gif

たくさん配置する(今回は20個ほど)

image.png

Hierarchyが多くのItemで埋め尽くされてしまったので、親オブジェクトを使用して見やすく整理する。

シーン上に空のゲームオブジェクトを作成し、Itemsと名付ける。

image.png

Itemsの座標を(0, 0, 0)にする。(子オブジェクトの座標が親オブジェクトの相対座標となるため分かりやすくするため)

image.png

Hierarchy上でShiftキーを押しながらItemをすべて選択し、Itemsの子オブジェクトとするためにドラッグアンドドロップする。

gifd.gif

トグルで畳むことができるようになった!

image.png

image.png

アイテムをいい感じにステージ上に散らし、Y座標はすべて0.5にする。

Hierarchy上でShiftキーを押しながらItemをすべて選択し、InspecterでY座標を変更すると一括変更できて楽。

image.png

image.png