Skip to content

ECS Framework API v2.2.13


ECS Framework API / ReactiveQuery

Class: ReactiveQuery

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:83

响应式查询类

提供基于事件驱动的实体查询机制,只在实体/组件真正变化时触发通知。

核心特性:

  • Event-driven: 基于事件的增量更新
  • 精确通知: 只通知真正匹配的变化
  • 性能优化: 避免每帧重复查询

Example

typescript
// 创建响应式查询
const query = new ReactiveQuery(querySystem, {
    type: QueryConditionType.ALL,
    componentTypes: [Position, Velocity],
    mask: createMask([Position, Velocity])
});

// 订阅变化
query.subscribe((change) => {
    if (change.type === ReactiveQueryChangeType.ADDED) {
        console.log('新实体:', change.entity);
    }
});

// 获取当前结果
const entities = query.getEntities();

Constructors

Constructor

new ReactiveQuery(condition, config): ReactiveQuery

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:112

Parameters

condition

QueryCondition

config

ReactiveQueryConfig = {}

Returns

ReactiveQuery

Accessors

count

Get Signature

get count(): number

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:191

获取查询结果数量

Returns

number


condition

Get Signature

get condition(): QueryCondition

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:451

获取查询条件

Returns

QueryCondition


id

Get Signature

get id(): string

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:458

获取查询ID

Returns

string


active

Get Signature

get active(): boolean

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:465

检查是否激活

Returns

boolean


listenerCount

Get Signature

get listenerCount(): number

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:472

获取监听器数量

Returns

number

Methods

subscribe()

subscribe(listener): () => void

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:151

订阅查询变化

Parameters

listener

ReactiveQueryListener

监听器函数

Returns

取消订阅的函数

(): void

Returns

void


unsubscribeAll()

unsubscribeAll(): void

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:177

取消所有订阅

Returns

void


getEntities()

getEntities(): readonly Entity[]

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:184

获取当前查询结果

Returns

readonly Entity[]


matches()

matches(entity): boolean

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:201

检查实体是否匹配查询条件

Parameters

entity

Entity

要检查的实体

Returns

boolean

是否匹配


notifyEntityAdded()

notifyEntityAdded(entity): void

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:223

通知实体添加

当Scene中添加实体时调用

Parameters

entity

Entity

添加的实体

Returns

void


notifyEntityRemoved()

notifyEntityRemoved(entity): void

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:262

通知实体移除

当Scene中移除实体时调用

Parameters

entity

Entity

移除的实体

Returns

void


notifyEntityChanged()

notifyEntityChanged(entity): void

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:299

通知实体组件变化

当实体的组件发生变化时调用

Parameters

entity

Entity

变化的实体

Returns

void


initializeWith()

initializeWith(entities): void

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:319

批量初始化查询结果

Parameters

entities

readonly Entity[]

初始实体列表

Returns

void


pause()

pause(): void

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:405

暂停响应式查询

暂停后不再响应实体变化,但可以继续获取当前结果

Returns

void


resume()

resume(): void

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:420

恢复响应式查询

Returns

void


dispose()

dispose(): void

Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:429

销毁响应式查询

释放所有资源,清空监听器和结果集

Returns

void

Released under the MIT License.