本文へスキップ
BecomeCoder

C#実践コース · 第8章 Unity開発 · レッスン45

Unityとは ― GameObjectとComponent

ローカル実施

導入

UnityはC#でゲームやインタラクティブ作品を作る代表的なエンジンです。Unityの世界観の核心は「GameObject(入れ物)にComponent(機能)を貼り付ける」というコンポーネント指向継承で機能を積むのではなく、部品を組み合わせて作ります。

図解

flowchart TB
    GO["GameObject『プレイヤー』<br/>(それ自体は空の入れ物)"]
    GO --> C1["Transform<br/>位置・回転・大きさ"]
    GO --> C2["SpriteRenderer<br/>見た目"]
    GO --> C3["Rigidbody<br/>物理"]
    GO --> C4["PlayerController(自作スクリプト)<br/>操作ロジック"]
    style GO fill:#e1f5fe

サンプル(Unity C# ― 読み物)

using UnityEngine;

// 自作の振る舞いは MonoBehaviour を継承したクラスとして書き、GameObjectに貼り付ける
public class PlayerController : MonoBehaviour
{
    // Inspector(エディタのGUI)から設定できる公開フィールド
    public int hp = 100;
    public string playerName = "勇者";

    // このコンポーネントが付いた GameObject を表すのが this.gameObject
    void Start()
    {
        Debug.Log($"{playerName} が登場(HP: {hp})");   // Unityのコンソールに出力
    }
}
  • GameObjectはシーンに置く「もの」の入れ物、Componentがその機能
  • 自作の振る舞いはMonoBehaviourを継承したC#クラスで書き、GameObjectに貼り付ける(Component化)
  • publicフィールドはUnityエディタのInspectorからGUIで設定できる
  • Debug.Log(...)がUnityでのConsole.WriteLineに相当(Consoleウィンドウに出る)

Unityで試す

  • Unity Hubで新規2Dプロジェクトを作り、空のGameObjectに上のPlayerControllerスクリプトを貼り付ける
  • 再生ボタンを押し、Consoleに「勇者 が登場(HP: 100)」が出ることを確認する
  • InspectorでplayerNameを変えて再生し、出力が変わることを確かめる
Unityエディタで、GameObjectにPlayerControllerスクリプトを貼り付け、Inspectorにpublicフィールドが表示され、Consoleに登場ログが出た様子
Unityエディタ:Inspectorのフィールドと Console のログ出力

まとめ

  • Unityは「GameObject(入れ物)+Component(機能)」のコンポーネント指向
  • 自作の振る舞いはMonoBehaviour継承クラス
  • publicフィールドはInspectorから設定、Debug.Logで出力

次回: スクリプトが呼ばれる順番——MonoBehaviourのライフサイクルです。