目录

EntityExtensions

Class/Struct Info

public static class EntityExtensions

实体扩展方法。

Method Summary

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个泛型组件。

Methods

[h2]Add<T1, ...>

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

[h2]Remove<T1, ...>

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

[h2]Set<T1, ...>

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"

[h2]AddComponent<TS>

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

  • true:实体添加共享组件成功。
  • false:实体已经拥有该共享组件。此时会用当前输入的组件值覆盖原来的组件值。

Sample Code

var world = new IECSWorld();
var entity = world.CreateEntity();
// 添加共享组件,仅支持添加1个共享组件,不输入组件值则为默认值
entity.AddComponent(new SharedComponent());
// 重复添加相同共享组件,返回false,但是新组件值会覆盖旧组件值
entity.AddComponent(new SharedComponent{Value = 1}); // 此时共享组件值为1

[h2]RemoveComponent<TS>

Method

static bool RemoveComponent<TS>(this IEntity entity)

移除共享组件,仅支持一个泛型。

TS为IShared。

Parameters

Name

Type

Description

entity

IEntity

作用的实体。

Return

Type

Description

bool

  • true:实体移除共享组件成功。
  • false:实体未拥有该共享组件。

Sample Code

var world = new IECSWorld();
var entity = world.CreateEntity();
entity.AddComponent(new SharedComponent());
// 移除共享组件,仅支持移除1个共享组件
entity.RemoveComponent<SharedComponent>();
// 移除没有的共享组件,返回false
entity.RemoveComponent<SharedComponent>();

[h2]SetSharedComponent<TS>

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

  • true:实体设置共享组件值成功。
  • false:实体未拥有该共享组件。

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

[h2]HasComponent<TS>

Method

static bool HasComponent<TS>(this IEntity entity)

判断实体是否拥有指定共享组件,仅支持一个泛型。

TS为IShared。

Parameters

Name

Type

Description

entity

IEntity

作用的实体。

Return

Type

Description

bool

  • true:实体拥有该共享组件。
  • false:实体未拥有该共享组件。

Sample Code

var world = new IECSWorld();
var entity = world.CreateEntity();
entity.AddComponent(new SharedComponent());
// 判断实体是否有共享组件
entity.HasComponent<SharedComponent>();
entity.HasComponent<SharedComponent2>();

[h2]GetComponent<TS>

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

[h2]SetEnable<T1, ...>

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

[h2]SetDisable<T1, ...>

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

[h2]IsEnabled<T1, ...>

Method

static bool IsEnabled<T1, ...>(this IEntity entity)

判断实体的组件的启用状态,最多支持10个泛型组件,输入复数种组件时,需要全部为启用状态才会返回true。

T为IComponent。

Parameters

Name

Type

Description

entity

IEntity

作用的实体。

Return

Type

Description

bool

  • true:当实体拥有所有指定组件,且这些组件均启用时。
  • false:实体未拥有其中任意组件,或实体的任意指定组件未启用时。

Sample Code

var world = new IECSWorld();
var entity = world.CreateEntity(new PgdPosition());
// 判断组件启用状态
entity.IsEnabled<PgdPosition>(); // true
entity.SetDisable<PgdPosition>();
entity.IsEnabled<PgdPosition>(); // false