クラス図
C#ScriptはデフォルトでMonoBehaviourの派生クラスとなります。MonoBehaviourの派生クラスはGameObjectにアタッチ(Componentとして登録)することができます。MonoBehaviourの基底のComponentクラスのメソッドやプロパティはgameObjectの同名のメソッドやプロパティへ移譲することでアタッチしているGameObjectのインスタンスであるかのごとく振舞えるようになります。
メソッドやフィールドはここに登場するものがすべてではありません。この他にもたくさんあります。Visual Studioで型名のコンテキストメニューの[定義へ移動]により、メタデータによるクラス定義を見ることができます。メソッドの中のコードやprivateフィールド等はみれませんが、どのようなメソッドがあるか興味のある人は覗いてみてください。
C#ScriptはgameObjectでGameObjectインスタンスを取得でき、GetComponentメソッドによりGameObjectインスタンスが持つComponentを取得できます。
MonoBehaviourクラス
C#Scriptのデフォルトの基底クラスはMonoBehaviourクラスです。GameObjectにアタッチ(Component登録)するにはMonoBehaviourの派生クラスである必要があります。Scene上のGameObjectにアタッチしたC#ScriptはScene上でインスタンス生成されます。Start()やUpdate()等のメソッドを定義することで初期化やフレーム更新タイミング等のイベント発生時に自動的に呼ばれます。基底クラスにはStart()やUpdate()メソッドがないので仮想メソッドとして呼ばれているのではなく、”Start”や”Update”というメソッド名でメソッドを定義していると呼ばれる仕組みのようです。
GameObjectクラス
Hierarchyに登録しておくとSceneの初めにUnityからインスタンス生成されます。InstantiateメソッドやCreatePrimitiveメソッド等でC#Scriptからインスタンス生成することもできます。インスタンス生成されたGameObjectはHierarchy windowに表示されます。
Componentクラス
Componentの派生クラスはGameObjectに追加することができます。
CameraクラスはHierarchyにあるMain Camera(GameObject)にアタッチされているComponentです。
LightクラスはHierarchyにあるDirectional Light(GameObject)にアタッチされているComponentです。
コメント