初めに
Unityでスプリクトを作成するとデフォルトであるMonoBehaviour。
初めは気にしないでいたが、ここに手をつける時がきた。
丸める処理のファイルを作成していた時のことである。
public class Rounding : MonoBehaviourからpublic static class Rounding
と変更。
何を意味しているのか全くわからなかったので調べてみた。
MonoBehaviourとは
全てのスクリプトの ベースのクラス で、 ゲームオブジェクトを制御 するために必要な機能を提供している。
Unityのスクリプトは、 MonoBehaviourクラス の 子クラスでなければならない というルールがある。
自作コンポーネントを作成する場合、必ずMonoBehaviourを継承する必要がある。
コンポーネントとは→ゲームオブジェクトに追加される機能のこと
MonoBehaviourの継承について
上記では『自作コンポーネントを作成する場合、必ずMonoBehaviourを継承する必要がある。』と書いてある。=必ず書かなければいけない。しかし私は、public static class Rounding
へと変更して、MonoBehaviourの記述を消去した。
果たして継承しないこともできるのか。
MonoBehaviourが不要な時
Hierarchy上に実体がない時
Awake, Start, Update等のMonoBehaviour継承で自動的に呼ばれるメソッドがない時
主にこの2つの場合はMonoBehaviourは無くても良いとされる。
なぜなら、MonoBehaviourを使用してゲームオブジェクトのものを動かす必要がなければ自動的に実行する必要もない。その為MonoBehaviourを継承しなくても支障はないのである。
注意したいのは、必ず継承させないようにするのでは無く、継承させないでも動かすことが出来るという解釈である。全てのクラスがMonoBehaviourを継承しても動かすことは可能である。
public static class Rounding とは
MonoBehaviourの意味を理解したところで、public class Rounding : MonoBehaviourからpublic static Roundingと変更したがその意味合いは何なのか。
public static class Rounding
(public)呼び出し可能な
(static)インスタンスを生成せずに外部クラスとの繋がりを明確に表現したいときに使用する修飾子
(Rounding)フィールド名
Roundingという名の何回でも呼び出し可能なファイルを作成しますよということ。