GameObject
私のコンポーネント ベースのゲーム エンジンの抽象的な実装は次のとおりです。
ゲームオブジェクト
- 一意のID
- isActive フラグ
- コンポーネントの配列
コンポーネントベースの設計について読んでいて、気になった点の 1 つは、配列の線形トラバーサルがキャッシュによって高速であることです。そのため、基本的な配列を使用してエンティティ/ゲーム オブジェクトを保持することにしました。
もう 1 つ気になったのは、一部のリソースがコンポーネントをゲーム オブジェクトから切り離していたことです。彼らが代わりに行ったのは、エンティティ マネージャー内にマップを用意することでした。マップには、キーとしてゲーム オブジェクトがあり、値としてコンポーネントの配列がありました。この場合、AGameObject
は ID しか持っていませんでした。
GameObject
クラス内にコンポーネントを配置する代わりに、ゲーム オブジェクトをコンポーネントにアタッチするマップを使用する利点 (パフォーマンスおよび/または設計上の観点から) はありますか?
さらに、頻繁なメモリ割り当てを避けるために、 GameObject
s はオブジェクトからプール (リサイクル) されます。Pool