目录

RelationCollection<TR>

Class/Struct Info

public readonly struct RelationCollection<TR>where TR : IRelation

表示一类关系集合,TR泛型表示一类关系。通常通过TryGetRelation<TR, TK>获取关系结果集使用。

Property Summary

Name

Type

Description

Count

int

关系集合数量。

Method Summary

Qualifier and Type

Method Name and Description

string

ToString()

将当前关系类型集合的详细信息以字符串形式返回。

TR

this[int index]

通过index获取对应索引的关系实体。

RelationCollectionEnumerator

GetEnumerator()

获取RelationCollection枚举器,用于遍历一类关系集合,foreach自动调用。

Methods

[h2]ToString

Method

string ToString()

将当前关系类型集合的详细信息以字符串形式返回。

Return

Type

Description

string

当前关系类型集合的信息。

[h2]this[int index]

Method

TR this[int index]

通过index获取对应索引的关系实体。

Parameters

Name

Type

Description

index

int

关系索引。

Return

Type

Description

TR

关系实体。

[h2]GetEnumerator

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);
    }
}