Class/Struct Info |
|---|
public static class EntityExtensions 实体扩展方法。 |
Qualifier and Type | Method Name and Description |
|---|---|
void | Add<T1, ...>(this IEntity entity, in T1 comp1, ..., in ITags iTags = default) 批量添加组件和标签,最多支持10个泛型组件。 |
void | Remove<T1, ...>(this IEntity entity, in ITags iTags = default) 批量移除组件和标签,最多支持10个泛型组件。 |
void | Set<T1, ...>(this IEntity entity, in T1 comp1, ...) 批量设置组件,最多支持10个泛型组件。 |
bool | AddComponent<TS>(this IEntity entity, in TS sharedComponent = default) 添加共享组件,仅支持一个泛型。 |
bool | RemoveComponent<TS>(this IEntity entity) 移除共享组件,仅支持一个泛型。 |
bool | SetSharedComponent<TS>(this IEntity entity, in TS sharedComponent) 设置共享组件值,仅支持一个泛型。 |
bool | HasComponent<TS>(this IEntity entity) 判断实体是否拥有指定共享组件,仅支持一个泛型。 |
ref TS | GetComponent<TS>(this IEntity entity) 获取共享组件,仅支持一个泛型。 |
IEntity | SetEnable<T1, ...>(this IEntity entity) 启用实体的组件,最多支持10个泛型组件。 |
IEntity | SetDisable<T1, ...>(this IEntity entity) 禁用实体的组件,最多支持10个泛型组件。 |
bool | IsEnabled<T1, ...>(this IEntity entity) 判断实体的组件的启用状态,最多支持10个泛型组件。 |
Method |
|---|
void Add<T1, ...>(this IEntity entity, in T1 comp1, ..., in ITags iTags = default) 批量添加组件和标签,最多支持10个泛型组件。 T为IComponent。 |
Parameters
Name | Type | Description |
|---|---|---|
entity | IEntity | 作用的实体。 |
comp1 | T1 | 泛型组件,最多10个。 |
iTags | ITags | 标签类型集合。 |
Sample Code
var world = new IECSWorld();
var entity = world.CreateEntity();
// 添加多个组件和标签,仅进行一次结构性变更,最多支持一次添加10个组件和10个标签
entity.Add(new PgdPosition(), new PgdScale(), new Name("test"), ITags.Get<TestTag, TestTag2>()); Method |
|---|
void Remove<T1, ...>(this IEntity entity, in ITags iTags = default) 批量移除组件和标签,最多支持10个泛型组件。 T为IComponent。 |
Parameters
Name | Type | Description |
|---|---|---|
entity | IEntity | 作用的实体。 |
iTags | ITags | 标签类型集合。 |
Sample Code
var world = new IECSWorld();
var entity = world.CreateEntity(new PgdPosition(), new PgdScale(), new Name("test"), ITags.Get<TestTag, TestTag2>());
// 移除多个组件和标签,仅进行一次结构性变更,最多支持一次移除10个组件和10个标签
entity.Remove(new PgdPosition(), new PgdScale(), new Name("test"), ITags.Get<TestTag, TestTag2>()); Method |
|---|
void Set<T1, ...>(this IEntity entity, in T1 comp1, ...) 批量设置组件,最多支持10个泛型组件。 T为IComponent。 |
Parameters
Name | Type | Description |
|---|---|---|
entity | IEntity | 作用的实体。 |
comp1 | T1 | 泛型组件,最多10个。 |
Sample Code
var world = new IECSWorld();
var entity = world.CreateEntity(new PgdPosition(), new Name("test")); // 此时实体的PgdPosition组件值为(0,0,0),Name组件值为"test"
// 设置多个组件值,最多支持一次设置10个组件
entity.Set(new PgdPosition(1,1,1), new Name("set")); // 此时实体的PgdPosition组件值为(1,1,1),Name组件值为"set" Method |
|---|
static bool AddComponent<TS>(this IEntity entity, in TS sharedComponent = default) 添加共享组件,仅支持一个泛型。 TS为IShared。 |
Parameters
Name | Type | Description |
|---|---|---|
entity | IEntity | 作用的实体。 |
sharedComponent | TS | 共享组件。 默认值为default。 |
Return
Type | Description |
|---|---|
bool |
|
Sample Code
var world = new IECSWorld();
var entity = world.CreateEntity();
// 添加共享组件,仅支持添加1个共享组件,不输入组件值则为默认值
entity.AddComponent(new SharedComponent());
// 重复添加相同共享组件,返回false,但是新组件值会覆盖旧组件值
entity.AddComponent(new SharedComponent{Value = 1}); // 此时共享组件值为1 Method |
|---|
static bool RemoveComponent<TS>(this IEntity entity) 移除共享组件,仅支持一个泛型。 TS为IShared。 |
Parameters
Name | Type | Description |
|---|---|---|
entity | IEntity | 作用的实体。 |
Return
Type | Description |
|---|---|
bool |
|
Sample Code
var world = new IECSWorld(); var entity = world.CreateEntity(); entity.AddComponent(new SharedComponent()); // 移除共享组件,仅支持移除1个共享组件 entity.RemoveComponent<SharedComponent>(); // 移除没有的共享组件,返回false entity.RemoveComponent<SharedComponent>();
Method |
|---|
static bool SetSharedComponent<TS>(this IEntity entity, in TS sharedComponent) 设置共享组件值,仅支持一个泛型。 TS为IShared。 |
Parameters
Name | Type | Description |
|---|---|---|
entity | IEntity | 作用的实体。 |
sharedComponent | TS | 共享组件。 |
Return
Type | Description |
|---|---|
bool |
|
Sample Code
var world = new IECSWorld();
var entity = world.CreateEntity();
entity.AddComponent(new SharedComponent());
// 设置共享组件,仅支持设置1个共享组件
entity.SetSharedComponent(new SharedComponent{Value = 1}); // 此时共享组件值为1
// 设置没有的共享组件,返回false
entity.SetSharedComponent(new SharedComponent2{Value = 1}); Method |
|---|
static bool HasComponent<TS>(this IEntity entity) 判断实体是否拥有指定共享组件,仅支持一个泛型。 TS为IShared。 |
Parameters
Name | Type | Description |
|---|---|---|
entity | IEntity | 作用的实体。 |
Return
Type | Description |
|---|---|
bool |
|
Sample Code
var world = new IECSWorld(); var entity = world.CreateEntity(); entity.AddComponent(new SharedComponent()); // 判断实体是否有共享组件 entity.HasComponent<SharedComponent>(); entity.HasComponent<SharedComponent2>();
Method |
|---|
static ref TS GetComponent<TS>(this IEntity entity) 获取共享组件,仅支持一个泛型。 TS为IShared。 |
Parameters
Name | Type | Description |
|---|---|---|
entity | IEntity | 作用的实体。 |
Return
Type | Description |
|---|---|
ref TS | 获取的共享组件引用。 |
Sample Code
var world = new IECSWorld(); var entity = world.CreateEntity(); entity.AddComponent(new SharedComponent()); // 获取共享组件引用,可直接修改组件值 entity.GetComponent<SharedComponent>().Value = 1; // 此时共享组件值为1
Method |
|---|
static IEntity SetEnable<T1, ...>(this IEntity entity) 启用实体的组件,最多支持10个泛型组件。 T为IComponent。 |
Parameters
Name | Type | Description |
|---|---|---|
entity | IEntity | 作用的实体。 |
Return
Type | Description |
|---|---|
IEntity | 实体。 |
Sample Code
var world = new IECSWorld(); var entity = world.CreateEntity(new PgdPosition()); // 启用组件,最多支持一次启用10个组件。组件默认为启用,重复启用等于无效操作。支持链式调用 entity.SetEnable<PgdPosition>();
Method |
|---|
static IEntity SetDisable<T1, ...>(this IEntity entity) 禁用实体的组件,最多支持10个泛型组件。 T为IComponent。 |
Parameters
Name | Type | Description |
|---|---|---|
entity | IEntity | 作用的实体。 |
Return
Type | Description |
|---|---|
IEntity | 实体。 |
Sample Code
var world = new IECSWorld(); // 禁用组件 var entity = world.CreateEntity(new PgdPosition()).SetDisable<PgdPosition>();
Method |
|---|
static bool IsEnabled<T1, ...>(this IEntity entity) 判断实体的组件的启用状态,最多支持10个泛型组件,输入复数种组件时,需要全部为启用状态才会返回true。 T为IComponent。 |
Parameters
Name | Type | Description |
|---|---|---|
entity | IEntity | 作用的实体。 |
Return
Type | Description |
|---|---|
bool |
|
Sample Code
var world = new IECSWorld(); var entity = world.CreateEntity(new PgdPosition()); // 判断组件启用状态 entity.IsEnabled<PgdPosition>(); // true entity.SetDisable<PgdPosition>(); entity.IsEnabled<PgdPosition>(); // false