UnityでC#スクリプトを作ると、必ずpublic class MyScript : MonoBehaviourという一文が付いてきます。「おまじない」として何となく書いているけれど、これが何者なのかは説明できない——そんな方は意外と多いのではないでしょうか。
MonoBehaviourは、UnityのAPIと自作スクリプトを繋ぐ「基底クラス」です。これを継承(:の右側に記述)するだけで、スクリプトはゲームオブジェクトにコンポーネントとして追加で きるようになり、UpdateやStartといったイベントを受け取り、transformやgameObjectといった便利なプロパティが使えるようになります。
この記事でわかること
MonoBehaviourを継承すると何ができるようになるのかtransform・gameObject・GetComponent<T>()の使い方Instantiate/Destroyによるオブジェクトの生成と破棄- 「
newできない」「Invokeは文字列指定」などのつまずきポイント
動作確認環境: Unity 6 (6000.x) / Input System
Sponsored
MonoBehaviourの役割
MonoBehaviourを継承する主なメリットは以下の通りです。
- コンポーネント化: 作成したスクリプトをゲームオブジェクトのコンポーネントとしてアタッチできるようになります。これにより、オブジェクトに振る舞いを追加できます。
- ライフサイクルイベントの受信:
Awake,Start,Updateなど、Unityが定義した特定のタイミングで自動的に呼び出されるイベント関数を使用できます。 - 主要プロパティへのアクセス: スクリプトがアタッチされているゲームオブジェクト自身や、そのTransformコンポーネントなどに簡単にアクセスできます。
- コルーチンの実行:
StartCoroutineメソッドを使って、「3秒待ってから実行」「数フレームに分けて少しずつ処理」のような 時間をまたぐ処理 を書けます。別スレッドで動くわけではなく、 メインスレッド上で処理を分割・待機する仕組み です(詳しくは コルーチンの記事 へ)。
MonoBehaviourの立ち位置を図にすると、「Unityエンジンと自作スクリプトを繋ぐ架け橋」というイメージになります。継承した瞬間から、Unity側のイベント(AwakeやUpdateなど)が自分のスクリプトに届くようになるわけです。
