Skip to content

Home > @esengine/ecs-framework-monorepo > EntityManager

EntityManager class

实体管理器

提供统一的实体管理和查询机制,支持高效的实体操作。 包括实体的创建、销毁、查询和索引管理功能。

Signature:

typescript
export declare class EntityManager

Example

typescript
const entityManager = new EntityManager();

// 创建实体
const player = entityManager.createEntity("Player");

// 查询实体
const playerEntity = entityManager.getEntityByName("Player");

// 复杂查询
const results = entityManager.query()
    .withAll(HealthComponent, PositionComponent)
    .active()
    .execute();

Constructors

Constructor

Modifiers

Description

(constructor)()

创建实体管理器实例

初始化内部数据结构和ID分配器。

Properties

Property

Modifiers

Type

Description

activeEntityCount

readonly

number

获取激活状态的实体数量

只计算同时满足激活状态且未被销毁的实体。

entityCount

readonly

number

获取实体总数

eventBus

readonly

EventBus

获取事件总线实例

允许外部代码监听和发射ECS相关事件。

Methods

Method

Modifiers

Description

createEntitiesBatch(count, namePrefix, skipEvents)

批量创建实体

为了优化大量实体创建的性能,批量处理索引更新和事件发射。 适用于需要创建大量实体的场景,如子弹、粒子等。

createEntity(name)

创建新实体

分配唯一ID并将实体添加到管理系统中,同时更新相关索引。

destroyEntity(entityOrId)

销毁实体

支持通过实体对象、名称或ID来销毁实体。 会清理所有相关索引并回收ID。

getAllEntities()

获取所有实体

返回当前管理的所有实体的副本数组。

getEntitiesByTag(tag)

根据标签获取实体列表

返回所有具有指定标签的实体。

getEntitiesWithComponent(componentType)

获取包含指定组件的所有实体

遍历所有实体,查找包含指定组件类型的实体。

getEntity(id)

根据ID获取实体

支持字符串和数字类型的ID。

getEntityByName(name)

根据名称获取实体

如果存在多个同名实体,返回第一个找到的实体。

getOptimizationStats()

获取性能优化统计信息

markEntityDirty(entity, componentTypes)

标记实体组件已修改

query()

创建查询构建器

返回一个新的查询构建器实例,用于构建复杂的实体查询。

queryWithComponentIndex(componentTypes, operation)

使用组件索引进行多组件查询

基于 MIT 许可证发布