Unity 6の画面構成を理解する ― Game・Scene・Hierarchy・Inspector・Projectの役割

広告

Unityを使い始めると、最初に戸惑いやすいのがエディター画面です。

画面には複数のウィンドウが並んでいて、それぞれに異なる役割があります。

今回の画面では、中央に白い四角形 Square を配置しています。

このシンプルな状態を使って、Unity Editorの基本的な画面構成を確認していきます。

この記事の画面について

Unity 6.6(6000.6.2f1)、Macで、2D(URP)のプロジェクトを新規作成した状態です。

ウィンドウの配置(レイアウト)は標準ではなく、見やすいように並べ替えたものです。標準レイアウトとは位置が違っても、各ウィンドウの役割は同じです。レイアウトは右上の「Layout」メニューから変更できます。

今回の画面

Unity Editorには、主に次のウィンドウがあります。

ウィンドウ主な役割
Game実際にゲームとして表示される画面
Sceneゲームオブジェクトを配置・編集する画面
Hierarchyシーン内に存在するオブジェクトの一覧
Inspector選択したオブジェクトの設定
Projectプロジェクト内のファイルや素材
Consoleエラーやログを確認する画面

それぞれは独立しているのではなく、互いに連携しています。

Unity 6の画面構成の全体図。Game・Scene・Hierarchy・Inspector・Project・Consoleの役割を示したイラスト
実際の画面をもとに描き起こしたイラスト(クリックで拡大)

Gameビュー ― プレイヤーから見える画面

今回のレイアウトでは、画面左にあるのが Gameビュー です。

青い背景の中に白い四角形が表示されています。

これは、カメラから見たゲームの世界です。

つまり、

Sceneビュー

ゲーム世界を作る

Main Camera

ゲーム世界を映す

Gameビュー

プレイヤーが見る

という関係になります。

Sceneビューでオブジェクトを配置しても、Main Cameraに映っていなければGameビューには表示されません。

青い背景はカメラの設定

Gameビューの青い背景は、Sceneビューにあるオブジェクトではありません。

Main Cameraの背景色(Background) の設定です。

HierarchyでMain Cameraを選び、InspectorのCameraコンポーネントで背景色を変えると、Gameビューの背景も変わります。

Sceneビュー ― ゲーム世界を編集する場所

画面中央にあるのが Sceneビュー です。

ここではゲームに登場するオブジェクトを、

  • 配置する
  • 移動する
  • 回転する
  • 大きさを変更する

といった操作ができます。

今回の画面では、白い四角形が選択されています。

四角形から、

  • 緑色の矢印
  • 赤色の矢印

が伸びています。

これはオブジェクトを移動するためのハンドルです。

2Dゲームでは主に、

X方向(赤) → 左右
Y方向(緑) → 上下

として使用します。

Hierarchy ― シーンに置かれているオブジェクト

画面中央右側にあるのが Hierarchy です。

今回のHierarchyを見ると、

SampleScene
├─ Main Camera
├─ Global Light 2D
└─ Square

という構成になっています。

Hierarchyには、現在のシーンに存在しているGameObject が表示されます。

Main Camera

ゲーム画面を映すカメラです。

このカメラから見えている範囲がGameビューに表示されます。

Global Light 2D

2Dゲーム全体を照らすためのライトです。

Universal Render Pipeline(URP)の2D環境で使われます。

後で説明するように、Squareは「ライトの影響を受ける」設定になっているため、このライトはSquareを表示するうえで大切な役割を持っています。

Square

今回配置している白い四角形です。

Hierarchyで Square をクリックすると、その内容がInspectorに表示されます。

Hierarchyの見方の図。Hierarchyでオブジェクトを選ぶとSceneビューでハイライトされ、Inspectorに設定が表示される流れと、親子関係の例、Hierarchyに表示される主なアイコンを示したイラスト
Hierarchyの見方(実際の画面をもとに描き起こしたイラスト、クリックで拡大)

Inspector ― GameObjectの設定を見る

画面右側にあるのが Inspector です。

今回の画面では、Hierarchyで Square を選択しているため、Squareの情報が表示されています。

特に重要なのが、

Transform
Sprite Renderer

です。

Unityでは、GameObjectにさまざまな Component(コンポーネント) を追加することで機能を持たせます。

考え方としては、

GameObject

├─ Transform
├─ Sprite Renderer
├─ Rigidbody2D
├─ Collider2D
└─ 自作スクリプト

のようになります。

Unityでは、GameObjectを土台として、そこにどのComponentを組み合わせるかによって、役割や機能が決まります。

Transform ― 位置・回転・大きさを管理する

Squareには Transform コンポーネントがあります。

画面では次のようになっています。

Position
X 0
Y 0
Z 0

Rotation
X 0
Y 0
Z 0

Scale
X 1
Y 1
Z 1

Position

オブジェクトの位置です。

2Dゲームでは主に、

X → 横方向
Y → 縦方向

を使用します。

例えば、

X = 3

にすると右へ移動し、

X = -3

にすると左へ移動します。

Rotation

オブジェクトの回転角度です。

2Dゲームでは主にZ軸を使用します。

例えば、

Rotation Z = 45

とすると、四角形が反時計回りに45度回転します。

時計回りに回したいときは、-45 のようにマイナスの値を入れます。

Scale

オブジェクトの大きさです。

現在は、

X = 1
Y = 1

なので元の大きさです。

例えば、

X = 2
Y = 2

とすると、縦横ともに2倍になります。

Sprite Renderer ― 画像を画面に表示する

Squareにはもう一つ、

Sprite Renderer

があります。

Sprite Rendererは、Spriteを画面に表示するためのComponentです。

今回の場合は、

Sprite → Square

となっています。

そのため、白い四角形がGameビューに表示されています。

Colorで色を変更できる

Sprite Rendererには、

Color

という項目があります。

ここを変更すると、Spriteの色を変えられます。

つまり同じ Square Spriteでも、




などに変更できます。

Colorは「掛け算」で効く

ここで知っておきたいのは、ColorはSpriteの元の色に掛け合わされるという点です。

今回のSquareは真っ白の画像なので、指定した色がそのまま表示されます。

しかし、もともと色のついた画像にColorを指定すると、元の色と掛け合わされて、思った色にならないことがあります。例えば、赤い画像にColorで青を指定すると、ほぼ黒になります。

ゲーム制作では、白い画像を1枚用意しておき、Colorで色分けする方法がよく使われます。

MaterialとGlobal Light 2D

Sprite Rendererの下のほうに、

Material → Sprite-Lit-Default

という項目があります。

Lit は「ライトの影響を受ける」という意味です。

つまりこのSquareは、2Dライトに照らされて見える設定になっています。

そのため、HierarchyにあるGlobal Light 2Dが重要になります。

シーンにライトがないと、Lit系のSpriteは暗く表示されることがあります。

2D(URP)のプロジェクトでSpriteが思ったように表示されないときは、ライトの有無も確認してみてください。

Sorting LayerとOrder in Layer

Sprite Rendererには、

Sorting Layer
Order in Layer

という項目もあります。

これは、複数のSpriteが重なったときの描画順序を決めるために使います。

例えば、

手前:エフェクト
プレイヤー
奥 :背景

のように、重なり順を管理できます。

Sorting Layerの並び順で大まかな前後が決まり、同じSorting Layerの中では、Order in Layerの数字が大きいSpriteほど手前に表示されます。

2Dゲームでは非常によく使用する設定です。

Add Component ― GameObjectに機能を追加する

Inspectorの下には、

Add Component

ボタンがあります。

ここからGameObjectに新しい機能を追加できます。

例えば、

Rigidbody2D
BoxCollider2D
Audio Source
自作C#スクリプト

などを追加できます。

Unityでは、

GameObjectにComponentを組み合わせてゲームを作る

という考え方が基本になります。

Projectウィンドウ ― ゲームの素材を管理する

画面左下にあるのが Projectウィンドウ です。

ここにはプロジェクトで使用するファイルが保存されています。

今回の画面では、

Assets
├─ Scenes
├─ Settings
└─ Welcome

というフォルダーが確認できます。

Settingsフォルダーを開くと、

DefaultVolumeProfile
InputSystem_Actions
Lit2DSceneTemplate
Renderer2D
Scenes
UniversalRenderPipelineGlobalSettings
UniversalRP

などが入っています。

これらは主に、2D(URP)の描画や入力の設定ファイルです。

HierarchyとProjectは名前が似ていますが、役割が大きく異なります。

HierarchyとProjectの違い

ここはUnityを学び始めたときに混乱しやすいところです。

Hierarchy

現在のシーンに置かれているGameObject

を管理します。

Main Camera
Square
Player
Enemy

などです。

Project

プロジェクトに保存されているファイル

を管理します。

例えば、

画像
音声
C#スクリプト
Scene
Prefab
Input Actions
Material

などです。

まとめると、

Project

ゲームで使う素材を保存

Hierarchy

素材などを使ってシーンを構成

という違いがあります。

Console ― エラーを確認する

画面下中央にあるのが Console です。

C#スクリプトを書いていくと、非常に重要になります。

今回は、右上のカウンターが情報・警告・エラーともに0で、メッセージは何も出ていません。

例えば、

Debug.Log("Hello Unity");

と書くと、Consoleに

Hello Unity

と表示されます。

また、プログラムに問題があると、

赤 → エラー
黄 → 警告
白 → 通常ログ

として表示されます。

C#を書いたのにゲームが動かない場合は、まずConsoleに赤いエラーが出ていないか確認します。

Playボタン

画面上部中央には、

のPlayボタンがあります。

これを押すとゲームが実行されます。

右隣には、一時停止ボタンとコマ送りボタンもあります。

Unityでは基本的に、

編集

Play

動作確認

停止

修正

という流れを何度も繰り返してゲームを作ります。

Play中の変更には注意する

Unityで特に注意したいのが、Play中にInspectorの値を変更できることです。

例えばPlay中に、

Position X = 5

に変更すると、画面上ではSquareが移動します。

しかしPlayを停止すると、基本的にはPlay開始前の値に戻ります。

そのため、

「Inspectorで変更したのに消えてしまった」

ということが起こります。

Unityを使い始めたときによく経験するポイントです。

Unityでは「GameObject+Component」で考える

今回の Square を整理すると、

Square

├─ Transform
│ ├─ Position
│ ├─ Rotation
│ └─ Scale

└─ Sprite Renderer
├─ Sprite
├─ Color
├─ Material
└─ Sorting Layer

という構造になっています。

この考え方は、Unityを理解するうえで非常に重要です。

例えば、これからプレイヤーを作る場合には、

Player

├─ Transform
├─ Sprite Renderer
├─ Rigidbody2D
├─ Collider2D
└─ PlayerController

というように、必要なComponentを追加していきます。

C#スクリプトもComponentになる

Unityでは、自分で作ったC#スクリプトもComponentとしてGameObjectに追加できます。

例えば、

public class PlayerController : MonoBehaviour
{
}

というクラスを作り、

Square

に追加すると、

Square
├─ Transform
├─ Sprite Renderer
└─ Player Controller

という構成になります。

ここが通常のC#アプリケーションとUnityの大きな違いの一つです。

UnityではC#クラスを書くことだけでなく、

「そのスクリプトを、どのGameObjectにComponentとして付けるのか」

まで考える必要があります。

画面同士の関係を整理する

ここまでの関係をまとめると、次のようになります。

Project(素材の保管場所)

│ Sprite・C#・Sceneなどを取り出して使う

現在のScene(SampleScene)の中身

│ 同じシーンを、3つの窓から見ている
├─ Hierarchy … GameObjectを一覧で見る
├─ Scene … 位置や大きさを見ながら編集する
└─ Inspector … 選んだGameObjectのComponentを設定する


Main Camera(シーンを映す)


Game(プレイヤーが見る画面)

Hierarchy・Scene・Inspectorは順番に処理が流れるのではなく、同じシーンを別々の角度から見ているという関係です。

Hierarchyで選んだGameObjectが、SceneではハイライトされてInspectorに設定が表示されるのは、そのためです。

さらに、C#スクリプトで問題が発生したときには、

Console

を確認します。

まとめ

Unity Editorには多くのウィンドウがありますが、最初に覚えたいのは次の6つです。

名前覚え方
Sceneゲーム世界を作る場所
Gameプレイヤーが見る画面
HierarchyシーンにいるGameObject
Inspector選択したGameObjectの設定
Project素材やファイルの置き場所
Consoleログやエラーを見る場所

そしてUnityの基本となる考え方が、

GameObjectにComponentを組み合わせて機能を作る

という仕組みです。

今回の白い Square も、単なる四角形ではありません。

Transform によって位置や大きさを持ち、Sprite Renderer によって画面に描画されています。

この基本構造が分かると、このあとC#スクリプトを追加してSquareを動かしたときにも、

Hierarchy
Inspector
Scene
Game
C#スクリプト

がどのようにつながっているのか理解しやすくなります。

次はこの Square にC#スクリプトを追加して、キーボード入力で動かすところへ進みます。

なお、このプロジェクトのProjectには InputSystem_Actions があるとおり、新しい Input System を使う構成になっています。

古いUnityの解説では、キー入力に Input.GetKey を使っている例をよく見かけます。

Input.GetKey は現在も存在しますが、これは旧Input ManagerのAPIです。Unity 6では、新しいプロジェクトには Input System の使用が推奨されています。

また、Project Settingsの Player → Other Settings にある Active Input HandlingInput System Package (New) のみに設定されている場合、Input.GetKey など旧Input ManagerのAPIを使うコードはそのままでは利用できません。この状態で旧Input ManagerのAPIを使用すると、実行時にConsoleへエラーが表示されることがあります。

次回は、この違いも確認しながら、Square をキーボード入力で動かしてみます。

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

広告

C#,Unity,Unity6

Posted by hidepon