ぷるぷるの雑記

低レイヤーがんばるぞいなブログ. 記事のご利用は自己責任で.

Unityスクリプトリファレンスを読む ~その2~

はじめに

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のプロパティをコンポーネントにもコピーしてるのではなかろうか?コンポーネントを使って機能を追加する仕組みを考えた人、天才すぎ