【Unity】MonoBehaviourについて調べてみた

  • |
【Unity】MonoBehaviourについて調べてみた
   

Unityでスクリプトを作成する際にデフォルト「MonoBehaviour」を継承したクラスになります。
普段余り考えて使っていなかったのですが、このMonoBehaviourが一体どういったクラスなのかに興味をもち少し調べてみました。
簡単ですがブログに記事にまとめていきます。


MonoBehaviour

UnityのドキュメントにはMonoBehaviourはこのように説明がされています。
MonoBehaviour – リファレンス

このページを見れば、だいたいどのようなことができるのかがわかってきます。

MonoBehaviourの継承ツリー

MonoBehaviourは、次のようにクラスを継承して作られています。
それぞれで使える機能が違っています。
  • Object
  • Component
  • Behaviour

Object

MonoBehaviourの一番最下層の基底クラスが「Object」です。
Unityを少しでも使っている方ですと、GameObjectを生成するときにもしかしたらこの型を見たことがあるかもしれません。


そのため、Instantiate()で生成するためには、Objectを継承したクラスでないといけません。
Destory()も同じです。
逆にいえば、Destory()だけを使いたい場合はMonoBehaviourを継承するのではなく、Objectを継承したほうがパフォーマンスがよくなります。

GameObject

Objectによく似たクラスに「GameObject」があります。
Unityを使っていると、この「GameObject」の方が馴染みがあると思います。

「GameObject」はObjectを継承したクラスで、UnityではおなじみのGetComponent()やSetActive()、transformなど使うことができます。


GameObjectはsealedで定義されているため、継承元としては使うことができません。

Component

「Object」を継承しているクラスが「Component」になります。
GetComponent()やtransform、SendMessageなどが利用できます。先程の「GameObject」とよく似た機能が使えるようです。
こちらは継承可能なクラスです。



Behaviour

「Component」を継承しているクラスが、Behaviourです。
ここでは2つのメソッドが定義されています。個人的にenabledはよく使っています。


有効・無効

コンポーネントを有効・無効にするとは、次の画像だと「MonoText」のスクリプトにチェックを操作します。
チェックを外すとスクリプトは動きません。
2019_01_19_memo

MonoBehaviour

最後にMonoBehaviourではどのようなことができるのかを調べていきたいと思います。
代表的なのがStartCoroutine()です。


非同期処理をUnityで実装するにはコルーチンを使うのが最も手っ取り早い方法です。
MonoBehaviourを継承したクラスではこのコルーチンを使うことができます。

Invoke()

Invoke()は特定の場所でActionを呼び出すことができます。


print

これはDebug.Log()を呼び出しているだけですので、直接呼び出しても良い気がしました。


最後に

Unityを使っているとMonoBehaviourを継承したクラスを作成しがちだと思います(デフォルトで設定されているので)
今回色々調べてみて、必ずしもMonoBehaviourを使わないくても良いとわかったので、必要に応じでクラスを作成していこうと思います。

Related Posts Plugin for WordPress, Blogger...