1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UnityでのC#文法 〜MonoBehaviourのライフサイクル関数編

Posted at

はじめに

UnityでC#スクリプトを書き始めると、必ず目にするのが次のような関数です。

・Awake()
・Start()
・Update()
・FixedUpdate()
・OnEnable()
・OnDisable()

この記事では、それぞれの関数がいつ呼ばれるのか、何を書くべきかなどを解説します。

MonoBehaviourのライフサイクルとは?

Unityでは、MonoBehaviour を継承したクラスに対して、決められたタイミングで特定の関数が自動的に呼ばれます。

これをライフサイクルと呼びます。

ポイントは、
自分で呼んでいないのに、Unityが勝手に呼んでいる
という点です。

Awake

void Awake()
{
    Debug.Log("Awake");
}

これは、オブジェクト生成後に呼ばれる関数です。
Startより先に呼ばれるのが特徴です。

自身の初期化や、コンポーネント取得(GetComponent)などに向いています。

Start

void Start()
{
    Debug.Log("Start");
}

これは、最初のUpdateが呼ばれる直前に呼び出されます。
1度だけ実行され、この時点では必ず他オブジェクトのAwakeが終わっています。

そのため、他のオブジェクトを参照する初期化やゲーム開始時の処理など、他のオブジェクトが存在する前提で進む処理を記述します。

Update

void Update()
{
    Debug.Log("Update");
}

これは、毎フレーム呼ばれる関数です。

入力処理、毎フレームの状態更新、アニメーションの制御などに向いています。

一方、処理を書きすぎると動作が重くなるというデメリットもあります。

FixedUpdate()

void FixedUpdate()
{
    Debug.Log("FixedUpdate");
}

これは、主に物理演算用の関数です。
一定時間ごとに呼ばれ、フレームレートに依存しないのが特徴です。

Rigidbodyを使った物理処理や、AddForceなどの物理演算に使います。

OnEnable

void OnEnable()
{
    Debug.Log("OnEnable");
}

GameObjectやコンポーネントがアクティブになるたびに呼ばれます。

対になる関数として、OnDisableがあります。

おわり

Unityには、このように似たような関数が存在します。

違いを理解し、使いこなせるようになりましょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?