ECS Framework API / ReactiveQuery
Class: ReactiveQuery
Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:83
响应式查询类
提供基于事件驱动的实体查询机制,只在实体/组件真正变化时触发通知。
核心特性:
- Event-driven: 基于事件的增量更新
- 精确通知: 只通知真正匹配的变化
- 性能优化: 避免每帧重复查询
Example
// 创建响应式查询
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
监听器函数
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
要检查的实体
Returns
boolean
是否匹配
notifyEntityAdded()
notifyEntityAdded(
entity):void
Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:223
通知实体添加
当Scene中添加实体时调用
Parameters
entity
添加的实体
Returns
void
notifyEntityRemoved()
notifyEntityRemoved(
entity):void
Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:262
通知实体移除
当Scene中移除实体时调用
Parameters
entity
移除的实体
Returns
void
notifyEntityChanged()
notifyEntityChanged(
entity):void
Defined in: packages/core/src/ECS/Core/ReactiveQuery.ts:299
通知实体组件变化
当实体的组件发生变化时调用
Parameters
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