[Unity] コンポーネントの基本
Unity上で扱うゲームオブジェクトには、座標や回転などを扱うトランスフォームやスプライト、アニメーション、スクリプトなど多種の情報を持っています。
これらは、コンポーネントと言います。
上記スクリーンショットの赤枠で囲まれた一つ一つがコンポーネントに相当します。
コンポーネントとは直訳すると「部品」とか「構成要素」という意味になります。
Unity上で扱うコンポーネントはこれらと大体同じ意味です。
コンポーネントは一部を除き自由に追加・削除が出来ます。
たとえば、「Circle Collider 2D」というコンポーネントを追加すると、円形の当たり判定を持つようになり、他の当たり判定のあるゲームオブジェクトと衝突します。
これがなければ、誰とも当たらないゲームオブジェクトとなります。
このコンポーネントの構成によって、ゲームオブジェクトの全てが定まると言ってよいでしょう。
これら一つ一つのコンポーネントは、スクリプト上ではComponentクラスの派生クラスとして管理されています。
たとえば、「Circle Collider 2D」コンポーネントはComponentクラスから派生したCircleCollider2Dクラスとなります。
C#のスクリプト上からコンポーネントを取得するためには、以下のような記述をします。
Animator anim = this.GetComponent<Animator>();
GetComponent()が自身のゲームオブジェクト内に存在するコンポーネントをひとつ取得するメソッドとなります。
Animatorをテンプレート引数として指定することで、AnimatorクラスまたはAnimatorを継承するコンポーネントのみ取得するようになります。
コンポーネントは複数取得することも可能で、これはGetComponents()(最後にsがついた複数形になっていることに注意)メソッドにより行います。
Collider2D[] cols = this.GetComponent<Collider2D>();
上記は、Collider2Dクラスを継承するクラスのコンポーネントを全て取得する処理の例です。
もし種類にかかわらず全てのコンポーネントを取得したい場合は、テンプレート引数にComponentを指定します。
Component[] cols = this.GetComponent<Component>();
クラスのプロパティなどの設定情報は、インスペクタに表示される項目に紐付いています。
まとめると、コンポーネントは以下のようになります。
・ゲームオブジェクトの構成要素
・コンポーネントによってゲームオブジェクトの全てが決まる
・スクリプトからはGetComponent()、GetComponents()で取得できる
■参考サイト
コンポーネントの使い方