【学習】MonoBehaviour クラス(スクリプトの基底クラス)
Unity 入門シリーズでは、
- C# スクリプトで MonoBehaviour を継承した
- Start と Update で処理を書いた
という形でスクリプトの基本を学びました。
しかし、MonoBehaviour には他にも重要なメソッドやライフサイクルがあります。
MonoBehaviour クラス
の主な API をまとめて押さえましょう。
今回は MonoBehaviour のライフサイクルとよく使うメソッドを解説します。
目次
今日学ぶこと
- Awake / Start … 初期化のタイミング
- Update / FixedUpdate / LateUpdate … 毎フレームの処理
- OnEnable / OnDisable … 有効化・無効化のタイミング
- GetComponent … コンポーネントを取得する
- gameObject / transform … 自分自身への参照
MonoBehaviour とは
MonoBehaviour は、Unity のスクリプトの基底クラスです。これを継承したクラスを GameObject にアタッチすると、Unity がライフサイクルメソッドを自動的に呼び出します。
using UnityEngine;
public class MyScript : MonoBehaviour
{
// Unity が呼び出す
}
ライフサイクル(呼ばれる順)
| メソッド | 呼ばれるタイミング |
|---|---|
| Awake | スクリプトが読み込まれたとき、1回だけ。他の Awake より先 |
| OnEnable | オブジェクトが有効になったとき。毎回 |
| Start | 最初の Update の前、1回だけ |
| FixedUpdate | 物理演算の更新ごと(約 0.02 秒間隔) |
| Update | 毎フレーム(約 1/60 秒間隔) |
| LateUpdate | すべての Update の後 |
| OnDisable | オブジェクトが無効になったとき |
| OnDestroy | オブジェクトが破棄されるとき |
Awake と Start の違い
| メソッド | 用途 |
|---|---|
| Awake | 他のスクリプトより先に初期化したいとき。参照の取得など |
| Start | ゲーム開始時の初期化。Awake の後に実行される |
void Awake()
{
// 最初に実行。他のオブジェクトの Awake より先
}
void Start()
{
// 1回だけ。最初の Update の前
}
Update と FixedUpdate の違い
| メソッド | 用途 |
|---|---|
| Update | 入力、移動、UI など。フレームレートに依存する処理 |
| FixedUpdate | 物理演算(Rigidbody の操作)。一定間隔で実行される |
| LateUpdate | カメラの追従など、すべての Update の後に実行したい処理 |
void Update()
{
// 毎フレーム。入力や Transform の操作
}
void FixedUpdate()
{
// 物理演算用。Rigidbody の AddForce など
}
OnEnable / OnDisable
オブジェクトが 有効(SetActive(true)) になったとき、無効(SetActive(false)) になったときに呼ばれます。
void OnEnable()
{
// 有効になったとき。毎回呼ばれる
}
void OnDisable()
{
// 無効になったとき
}
GetComponent(コンポーネント取得)
GetComponent で、同じ GameObject にアタッチされたコンポーネントを取得できます。
// Rigidbody2D を取得
Rigidbody2D rb = GetComponent<Rigidbody2D>();
// SpriteRenderer を取得
SpriteRenderer sr = GetComponent<SpriteRenderer>();
// 取得できない場合は null
if (rb != null)
{
rb.velocity = Vector2.zero;
}
| メソッド | 説明 |
|---|---|
| GetComponent() | 最初に見つかったコンポーネントを取得 |
| GetComponentInChildren() | 子を含めて検索 |
| GetComponentInParent() | 親を含めて検索 |
gameObject / transform
MonoBehaviour には、自分自身への参照が用意されています。
| プロパティ | 説明 |
|---|---|
| gameObject | このスクリプトがアタッチされている GameObject |
| transform | この GameObject の Transform(gameObject.transform の省略形) |
// 自分自身を削除
Destroy(gameObject);
// 自分の位置を変更
transform.position = new Vector3(0, 0, 0);
完成コード例
using UnityEngine;
public class LifecycleSample : MonoBehaviour
{
private Rigidbody2D rb;
void Awake()
{
rb = GetComponent<Rigidbody2D>();
}
void Start()
{
Debug.Log("ゲーム開始");
}
void Update()
{
// 毎フレームの処理
}
void OnDestroy()
{
Debug.Log("破棄されました");
}
}
重要ポイント
MonoBehaviour は Unity のスクリプトの基底クラスです。
- Awake … 最初に実行。参照の取得
- Start … ゲーム開始時の初期化
- Update … 毎フレーム。入力や移動
- FixedUpdate … 物理演算用
- GetComponent … コンポーネントを取得
- gameObject / transform … 自分自身への参照
発展アイデア
- Invoke / InvokeRepeating … 遅延実行、一定間隔の実行
- Coroutine … 複数フレームにわたる処理
- DontDestroyOnLoad … シーン切り替えで破棄されないようにする
MonoBehaviour は Unity スクリプトの土台 です。ライフサイクルを理解すると、意図したタイミングで処理を書けます。
訪問数 4 回, 今日の訪問数 4回




ディスカッション
コメント一覧
まだ、コメントがありません