【Unity】ゲームオブジェクトとコンポーネントの関係

Unityのゲームオブジェクトとコンポーネントの基本的な関連性を考えてみましょうゲームオブジェクトは1つ以上のコンポーネントを持つことができ、それらのコンポーネントはそのゲームオブジェクトにアタッチされます。また、各コンポーネントは所属するゲームオブジェクトを参照することができます。

Unityエディターから見るイメージ

クラス図でイメージ化

解説

Unityのゲーム開発において、ゲームオブジェクト(GameObject)コンポーネント(Component) は中心的な役割を果たします。これらの関連性を理解することは、Unityの仕組みを深く理解する上で非常に重要です。

ゲームオブジェクト (GameObject)

  • Unityのシーン内に存在する任意のオブジェクトを指します。
  • それ自体には特性や振る舞いは持たず、単なる「容器」としての役割を果たします。
  • 実際の振る舞いや特性は、ゲームオブジェクトにアタッチされるコンポーネントによって決まります。
  • 例えば、プレイヤーキャラクターや敵キャラクター、アイテムなど、ゲーム内のあらゆるエンティティはゲームオブジェクトとして表現されます。

コンポーネント (Component)

  • ゲームオブジェクトにアタッチされる要素で、ゲームオブジェクトに特定の振る舞いや特性を与える役割を持ちます。
  • Unityには標準で多くのコンポーネントが提供されており、例としてRigidbody(物理的な挙動を制御する)、Collider(当たり判定を管理する)、スクリプト(カスタムロジックを記述する)などがあります。
  • コンポーネントはゲームオブジェクトにアタッチすることで、そのゲームオブジェクトに特定の振る舞いや能力を持たせることができます。

関連性

  • ゲームオブジェクトは、複数のコンポーネントを持つことができます。これにより、1つのゲームオブジェクトが複数の異なる振る舞いや特性を持つことが可能となります。
  • 逆に、コンポーネントは1つのゲームオブジェクトにしかアタッチできないため、コンポーネントは常に特定のゲームオブジェクトに所属します。
  • この関係性を利用して、ゲームオブジェクトの性質や振る舞いをカスタマイズすることがUnityの開発の基本となります。

例えば、空を飛ぶ敵キャラクターを作りたい場合、EnemyというゲームオブジェクトにRigidbodyコンポーネント(物理挙動)と、飛行の動きを制御するスクリプトコンポーネントをアタッチすることで、その振る舞いを実現することができます。

参考

クラス図を構成するPlantUML図

@startuml

class GameObject {
  +name : String
  +tag : String
  +layer : int
  +AddComponent<T>() : T
  +GetComponent<T>() : T
}

class Component {
  +gameObject : GameObject
  +enabled : bool
}

GameObject --> Component : has >

note right of GameObject: Unityの基本的な\nゲームオブジェクト\n例: Player, Enemy, Coin
note right of Component: ゲームオブジェクトに\nアタッチされるコンポーネント\n例: Rigidbody, Collider, Script

@enduml

Unity

Posted by hidepon