createSystem()
创建一个 Engine-global System Definition。
签名
ts
function createSystem<T>(
name: string,
setup: (context: SystemContext) => T,
options?: {
enabled?: boolean;
order?: number;
},
): SystemDefinition<T>;setup 严格同步执行一次,返回的业务 identity 由 engine.addSystem 原样返回。
ts
const MotionSystem = createSystem('motion', ({
engine,
onDestroy,
onUpdate,
}) => {
const query = engine.world.createQuery(Velocity);
onUpdate(({ delta, views }) => {
query.forEach(entity => update(entity, delta));
});
onDestroy(() => console.log('removed'));
return { query };
}, { enabled: true, order: 0 });
const motion = engine.addSystem(MotionSystem);
engine.setSystemEnabled(MotionSystem, false);
engine.removeSystem(MotionSystem);SystemContext 还提供 onLateUpdate/onResize/onEnable/onDisable 和 typed onEvent/onceEvent/emitEvent。Definition order 同时决定 update 和 late-update 顺序。