タイトル: ヒエラルキー(Hierarchy)
SEOタイトル: Unity Hierarchy ウィンドウ完全ガイド(親子関係 / Prefab / Multi Scene / Sort)
| この記事の要点 |
|
Hierarchy ウィンドウとは
Hierarchy ウィンドウは、現在編集中のシーンに存在するすべての GameObject をツリー構造で表示するパネルです。Project ウィンドウ(プロジェクトに保存されたアセット)と対になる存在で、Hierarchy はシーン内のオブジェクトのみを扱います。
多くの操作 (オブジェクト選択、親子関係の構築、Prefab 化、Sceneビューでの選択同期) はここを起点に行われます。
親子関係 (Parent / Child)
Hierarchy 上でドラッグ&ドロップすると親子関係を作れます。子は親の Transform を継承する重要な機能です:
- 位置 (Position) — 親が動くと子も同じだけ動く
- 回転 (Rotation) — 親が回ると子も同じ軸で回る
- スケール (Scale) — 親を 2 倍にすると子の見た目も 2 倍
- Active 状態 — 親を非アクティブにすると子も全部消える
子の Transform に表示される値は親に対する相対値 (localPosition / localRotation / localScale) です。グローバル座標は transform.position でアクセスできます。
Empty GameObject の活用
右クリック → Create Empty で空の GameObject を作れます。Transform だけを持つこのオブジェクトは多用途:
- 複数 GameObject のグループ親(フォルダ代わり)
- 計算用の基準座標(弾の発射位置、エフェクト原点等)
- マネージャー系スクリプトのアタッチ先(GameManager 等)
- Animator のルート
Hierarchy 右クリックメニュー
空白部分または GameObject 上で右クリックで主要操作一覧:
| メニュー | サブ項目 |
|---|---|
| Create Empty | 空 GameObject 作成(シーン直下 or 子) |
| 3D Object | Cube / Sphere / Capsule / Cylinder / Plane / Quad / Terrain / Text 等 |
| 2D Object | Sprite / Sprite Mask / Tilemap 等 |
| Effects | Particle System / Trail / Line |
| Light | Directional / Point / Spot / Area |
| Audio | Audio Source / Audio Reverb Zone |
| Video | Video Player |
| UI | Canvas / Image / Text / Button / Panel / Scroll View 等 |
| Camera | カメラ追加 |
| Cut / Copy / Paste / Duplicate / Delete | 標準操作(Paste As Child もあり) |
| Rename | 名前変更 (F2 でも可) |
| Set as first / last sibling | 同階層内の表示順 |
Prefab インスタンスの表示
Prefab 化された GameObject は Hierarchy 上で見た目が変わります:
| 表示 | 意味 |
|---|---|
| 青文字 | Prefab インスタンス(変更なし) |
| 青+太字 | Prefab インスタンス(オーバーライドあり) |
| 青+斜体 | Prefab Variant |
| 赤文字 | Prefab が見つからない (Missing Prefab) |
| グレー文字 | 非アクティブ (gameObject.SetActive(false)) |
Active 状態のトグル
各 GameObject 名の左にあるチェックボックスで Active / Inactive を切替えます。Inspector の最上段にも同じチェックボックスがあります。子は親の Active 状態にも依存:
// 自分の Active 設定
go.activeSelf // 自分のチェック (true/false)
go.activeInHierarchy // 親もたどって実際に有効か
// SetActive
go.SetActive(false); // 自分と子全部を非表示・スクリプト停止
検索とフィルタ
Hierarchy 上部の検索ボックスで GameObject 名検索ができます。プレフィックスで絞り込み:
名前— 名前部分一致t:Camera— Type 検索(コンポーネント名)t:Light— Light 全てl:UI— Layer 名で検索
Sort モード
Hierarchy 右上の 横線が並んだアイコンで並び順を変更:
- Transform Sort(既定)— Hierarchy 上の階層順
- Alphabetical Sort — 名前順
- カスタムソート(エディタ拡張可)
Multi Scene Editing
Unity は複数シーンを同時に開いて編集できます。レベル分けやライティングシーン分離、共通 UI の分割等に便利:
- Project ウィンドウから別シーンを Hierarchy にドラッグ → 追加ロード
- 各シーンはLoaded / Unloaded / Active 状態を切替可
- 右クリック → Set Active Scene でアクティブシーン指定(新規 GameObject はここに入る)
- 右クリック → Unload Scene / Remove Scene
using UnityEngine.SceneManagement;
// ランタイムでもマルチシーンロード可能
SceneManager.LoadScene("UI", LoadSceneMode.Additive);
SceneManager.LoadScene("Stage1", LoadSceneMode.Additive);
// アクティブシーン変更
Scene s = SceneManager.GetSceneByName("Stage1");
SceneManager.SetActiveScene(s);
便利ショートカット
| キー | 動作 |
|---|---|
| F2 | 名前変更 |
| Alt + ←/→ | ツリー折りたたみ / 展開 |
| Alt + Shift + ←/→ | 子を含めて折りたたみ |
| Ctrl + D | 複製 |
| Ctrl + Shift + N | 新規 Empty GameObject |
| Alt + Shift + N | 選択中の子として新規 Empty |
| F | Scene ビューで選択中にフォーカス |
| Shift + クリック | 範囲選択 |
| Ctrl + クリック | 追加選択 |
Hierarchy をロックする
Inspector と同じ右上の南京錠アイコンはありませんが、別タブを作って同様の効果が得られます。タブ右クリック → Add Tab → Hierarchy。
パフォーマンス注意点
- Hierarchy に数万単位の GameObject があるとエディタが重くなる → 動的生成して Object Pool で管理
- 深すぎる階層(10 階層以上)は Transform 行列計算が重い → フラットに保つ
- シーン保存時にすべての GameObject の差分が書き出される → 大規模シーンは Prefab 分割
FAQ
Q: ドラッグで親子化したら子の Transform 値が変わった
A: 親子関係を作ると、子の Position は親に対する相対値に変換されます。グローバル位置を保ちたければ、親子化前に親を原点に置くか、コードで transform.SetParent(parent, true)(第二引数 worldPositionStays=true)を使います。
Q: シーン保存時に Hierarchy の並び順が変わってしまう
A: Sort が Alphabetical になっている可能性。Transform Sort に戻してください。
Q: Hierarchy で見えない GameObject がある
A: ① 検索フィルタが残っている、② HideFlags.HideInHierarchy が設定されている、③ SerializedObject 経由で生成された一時 GameObject の可能性。