Unity Engine #4 MonoBehavior
このノートでは、Unityのデフォルトで作成されるスクリプトの親クラスであるMonoBehaviorについて、知っておくべき内容を説明します。
ライフサイクル
Unity公式の図で、MonoBehavior内の各関数の呼び出し順序を確認できます。
初期化
初期化段階では、Awake()、Reset()、OnEnable()、Start()が使われます。
Awake
Awakeはスクリプトインスタンスの読み込み時に呼び出されます。すべての関数の中で最初に呼ばれます。オブジェクトと変数の初期化(通常は局所的または他のスクリプトに依存しない)に使用します。この関数は1回だけ呼ばれます。
Reset
Resetはエディタで、ユーザーが初めてコンポーネントを追加するか、スクリプトをリセットするときに呼ばれます。デフォルト値の設定に使われます。ゲーム実行時には呼ばれません。
OnEnable
スクリプトインスタンスが有効になったときに呼ばれます。Awakeの後、Startの前に呼ばれます。スクリプトが有効になるたびに呼ばれるため、複数回呼ばれる可能性があります。
Start
スクリプトの最初のUpdateの前に1回呼ばれます。他のオブジェクトやスクリプトに依存する初期化の設定に使われます。
物理
物理段階では、FixedUpdate、OnCollisionXXX、OnTriggerXXXが主に扱われます。
FixedUpdate
FixedUpdateは物理関連のコード(剛体の移動、回転、物理計算など)の処理に使われます。固定時間で更新され(毎秒50回、ステップ0.02秒)、フレームレートに依存しないため、異なるフレームレートでも物理シミュレーションが一貫します。
OnCollisionEnter/Stay/Exit
OnCollisionXXX関数は衝突イベントを処理します。Enterは2つのオブジェクトのコライダーが初めて接触したとき、Stayは衝突が持続する各物理更新で、Exitは衝突が終わったときに呼ばれます。
