Class/Struct Info |
|---|
public readonly struct RelationCollection<TR>where TR : IRelation 表示一类关系集合,TR泛型表示一类关系。通常通过TryGetRelation<TR, TK>获取关系结果集使用。 |
Qualifier and Type | Method Name and Description |
|---|---|
string | ToString() 将当前关系类型集合的详细信息以字符串形式返回。 |
TR | 通过index获取对应索引的关系实体。 |
RelationCollectionEnumerator | 获取RelationCollection枚举器,用于遍历一类关系集合,foreach自动调用。 |
Method |
|---|
string ToString() 将当前关系类型集合的详细信息以字符串形式返回。 |
Return
Type | Description |
|---|---|
string | 当前关系类型集合的信息。 |
Method |
|---|
TR this[int index] 通过index获取对应索引的关系实体。 |
Parameters
Name | Type | Description |
|---|---|---|
index | int | 关系索引。 |
Return
Type | Description |
|---|---|
TR | 关系实体。 |
Method |
|---|
readonly RelationCollectionEnumerator<TR> GetEnumerator() 只读方法。 获取RelationCollection枚举器,用于遍历一类关系集合,foreach自动调用。 |
Return
Type | Description |
|---|---|
RelationCollectionEnumerator | RelationCollection枚举器。 |
Sample Code
var world = new IECSWorld();
var target1 = world.CreateEntity();
var target2 = world.CreateEntity();
var entity = world.CreateEntity();
entity.AddRelation(new AttackRelation { target = target1, attackDamage = 15 }, out _);
entity.AddRelation(new AttackRelation { target = target2, attackDamage = 20 }, out _);
RelationCollection<AttackRelation> relationCollection = entity.GetRelations<AttackRelation>();
var collectionStr = relationCollection.ToString(); // collectionStr = "{ 1, 2 }", AttackRelation target1, AttackRelation target2
var attackRelation = relationCollection[0]; // collectionStr = AttackRelation { target = target1, attackDamage = 15 }
foreach (AttackRelation relation in relationCollection)
{
if (relation.target.Equals(target1))
{
AreEqual(15, relation.attackDamage);
}
if (relation.target.Equals(target2))
{
AreEqual(20, relation.attackDamage);
}
}