はじめに
Unityの主要なクラスComponentのメモ。
Componentクラス
特徴
GameObjectにアタッチされるすべてのコンポーネントのもとになるクラス。リファレンスを自分でまとめてるときに気が付いたが、Componentクラスで定義されたメンバはgameObjectを除きGameObjectクラスでも定義されている。しかし、GameObjectクラスとは対照的にStatic関数は(Objectクラスから継承した分を除いて)定義されてない。
継承
Object <----- Component
変数
gameObject以外はGameObjectクラスでも同じ名前の変数が定義されている。
変数名 | 説明 |
---|---|
gameObject | コンポーネントがアタッチされているゲームオブジェクト |
tag | ゲームオブジェクトに付与されたタグ |
transform | ゲームオブジェクトにアタッチされたtransformコンポーネント (Transformコンポーネントだけ特別で変数からアクセスできる) |
Public関数(一部抜粋)
GameObjectクラスでも同じ名前の関数が定義されている。
Public関数名 | 説明 |
---|---|
BroadcastMessage(string methodName, object parameter= null, SendMessageOptions options= SendMessageOptions.RequireReceiver) | ゲームオブジェクトまたは子オブジェクトにあるすべての MonoBehaviour を継承したクラスにある methodName 名のメソッドを呼び出す。optionで指定したメソッド名が見つからないときにエラーを表示するかどうかを設定可能。 |
CompareTag(string tag) | オブジェクトがtagという名前のタグを付与されてるかどうか |
GetComponent |
ゲームオブジェクトのT型のコンポーネントを取得 |
GetComponentInChildren |
ゲームオブジェクトまたはその子らのT型のコンポーネントを取得 |
GetComponentInParent |
ゲームオブジェクトの親オブジェクトのT型のコンポーネントを取得 |
GetComponentsInChildren |
ゲームオブジェクトまたはその子らのT型のコンポーネントをすべて取得 |
GetComponentsInParent |
ゲームオブジェクトの親オブジェクトのT型のコンポーネントをすべて取得 |
SendMessage(string methodName, object value= null, SendMessageOptions options= SendMessageOptions.RequireReceiver) | ゲームオブジェクトにアタッチされているすべてのMonoBehaviourにあるmethodName名のメソッドを呼び出す |
まとめ
ComponentクラスのメンバのほとんどがGameObjectのメンバと同じ名前なのには驚いたが、おそらくアタッチされたGameObjectのプロパティをコンポーネントにもコピーしてるのではなかろうか?コンポーネントを使って機能を追加する仕組みを考えた人、天才すぎ