ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Unity - Monobehavior

初めに

 本記事では、Unity をスクリプトから操作するときに必ず見る MonoBehaviour とはどのようなもので、何ができるのかをまとめます。



前提知識

 MonoBehaviour の説明には、継承や派生の知識が必要です。よくわからない場合は、下の記事で説明しておりますので、そちらをご覧ください。

fineworks-fine.hatenablog.com

MonoBehaviour

MonoBehaviour とは

 MonoBehaviour は、すべての Unity スクリプトが派生する基本クラスです。MonoBehavior を継承することで、次のようなものを使えるようになります。

(MonoBehaviour を継承することで使えるようになるもの)

  • Start、Awake などのイベント関数
  • Update、FixedUpdate などのフレームごとの処理をする関数
  • コルーチン
  • GetComponent などのコンポーネントに関する処理
  • OnCollisionEnter、OnCollisionExit2D などの当たり判定に関する関数
  • gameObject や transform、tag などゲームオブジェクトに関する変数
  • Destroy や Instantiate などの削除、生成に関する関数

など

 Unity 上のオブジェクトを操作したり、実行したときのフレームごとの処理をしたりする場合には MonoBehaviour を継承し、その中に用意してある関数を使っていくことになります。

 下で紹介していない MonoBehaviour 上の変数、関数は公式ドキュメントをご覧ください。

docs.unity3d.com

イベント関数

関数 説明
Awake スクリプトインスタンス化されたときに呼び出される
Start 最初のUpdateフレームが呼び出される前に呼び出される
OnEnable オブジェクトが有効/アクティブになったときに呼び出される

フレームごとの処理をする関数

関数 説明
Update MonoBehaviour が有効の場合に、毎フレーム呼び出されます
FixedUpdate 一定時間(Fixed Timestep)ごとに呼び出される
LateUpdate Behaviour が有効の場合、Update 関数が呼び出された後に、毎フレーム呼びだされます

コルーチン

 以前、記事にまとめましたので、そちらをご覧ください。

当たり判定に関する関数

 下のリンク先に使い方をまとめています。そちらをご覧ください。

fineworks-fine.hatenablog.com

Monobehavior がいらない場合

 先ほど Monobehavior はオブジェクトを操作したり、実行したときのフレームごとの処理をしたりする場合に継承します。しかし、それ以外の処理では Monobehavior を継承しなくてもよいです。

(Monobehavior を継承しなくてもよい例)

  • 計算をさせるだけなど C# の機能のみで可能なもの
  • GameObject を使う必要のないもの

最後に

  • MonoBehaviour は、すべての Unity スクリプトが派生する基本クラス
  • MonoBehaviour を継承することでゲームオブジェクトやフレーム毎の処理をするための変数、関数を使うことができるようになる
  • MonoBehaviour を継承しなくてもよい場合もある