Verhaltensweisen
Einführung
Ein Verhalten ist eine Funktion, die bei jedem Tick auf der Welt ausgeführt wird.
Definieren eines Verhaltens
Der folgende Code ist ein Beispiel dafür, wie man ein benutzerdefiniertes Verhalten definiert:
const behavior = (world) => {
if ((world.time.elapsed % 5000) - world.time.delta < 0) {
const eid = world.createEntity();
Enemy.set(world, eid, { health: 100 });
}
};
Registrierung eines Verhaltens
Der folgende Code ist ein Beispiel dafür, wie man ein benutzerdefiniertes Verhalten registriert:
ecs.registerBehavior(Verhalten);
Deaktivieren eines Verhaltens
Der folgende Code ist ein Beispiel dafür, wie ein benutzerdefiniertes Verhalten deaktiviert werden kann:
ecs.unregisterBehavior(Verhalten);
Abfrage des Verhaltens
Verhaltensmuster können Abfragen ausführen, die Listen von Entitäts-IDs zurückgeben.
const query = ecs.defineQuery([Feind, Gesundheit]);
const enemyDieBehavior = (world) => {
const enemies = query(world);
for (const enemyId in enemies) {
if (Health.get(world, enemyId).hp <= 0) {
world.destroyEntity(enemyId);
}
}
};
ecs.registerBehavior(enemyDieBehavior);
Systeme
Verhaltensweisen können auch als Systeme strukturiert werden, die auf Entitäten laufen, die bestimmten Abfragen entsprechen und einen effizienten Datenzugriff ermöglichen.
Dieser Ansatz verbessert die Leistung, da Daten wie "Feind" und "Gesundheit" im Voraus abgefragt werden, was die Iteration beschleunigt.
const enemyDieSystem = ecs.defineSystem(
[Enemy, Health],
(world, eid, [enemy, health]) => {
if (health.hp <= 0) {
world.destroyEntity(eid);
}
}
);
ecs.registerBehavior(enemyDieSystem);