私はエンティティ/コンポーネントシステムを作っています。継承されたコンポーネントに基づいてエンティティを選択できる関数を作るのにいくつか問題があります。のは、例を見てみましょう:継承システムをブラウズするには?
Animal (1)
Dog (2)
Doberman (3)
Rottweiler (3)
Cat (2)
Siamese (3)
Persian (3)
あなたは、エンティティコンポーネントシステムに慣れていない場合は、のは、私が「レックス」という名前のドーベルマンをしたい場合は、私のようなものだろうと言ってみましょう:
let Rex: Entity = createEntity("Doberman");
DobermanコンポーネントはDogに拡張され、DogはAnimalに拡張されます。だからRexはこれらの3つのコンポーネントすべての特性を受け取ります。
ここで、Animalコンポーネント(つまり「selectEntities(Animal)」)を持つすべてのエンティティを選択する場合は、Dogs、Cats、Dobermansなども選択します。つまり、すべて継承したコンポーネントです。そして、それは動的なものでなければならず、継承されたコンポーネントの連鎖を考慮に入れる必要があります。私の最初のバージョンでは、コンポーネントは他のコンポーネントの1つだけ継承することができました。単純なループは、すべてのエンティティを参照する簡単なソリューションでした。
特定のコンポーネントはまだ1つの他のコンポーネント(Dog to Animal)にしか拡張できませんが、無限の数のコンポーネント(DobermanとRottweilerのDog)によって拡張できます。そして、私は親からすべてのコンポーネントを取得する方法を理解することはできません。それは単なるループの組み込み/インターロックで可能ですか?
ありがとうございました。