实现对实体的更新操作,包括单个实体更新、一组实体更新、按条件更新等。
使用update(entity)
方法,传入需要更新的实体对象参数entity
,示例代码如下:
var entityManager = new yuka.EntityManager();
var entity = new yuka.Entity();
entity.addComponent(new MyComponent());
entityManager.add(entity);
// 更新实体
entity.getComponent(MyComponent).value = 999;
entityManager.update(entity);
使用updateMany(entities)
方法,传入需要更新的实体对象数组参数entities
,示例代码如下:
var entityManager = new yuka.EntityManager();
var entity1 = new yuka.Entity();
entity1.addComponent(new MyComponent());
entityManager.add(entity1);
var entity2 = new yuka.Entity();
entity2.addComponent(new MyComponent());
entityManager.add(entity2);
// 更新两个实体
var entities = [entity1, entity2];
for (var i = 0; i < entities.length; i++) {
entities[i].getComponent(MyComponent).value = 999;
}
entityManager.updateMany(entities);
使用updateByComponent(componentType, updateFn)
方法,按照指定组件类型componentType
,对满足条件的组件执行更新操作,更新操作由回调函数updateFn
指定,回调函数参数为组件实例。示例代码如下:
var entityManager = new yuka.EntityManager();
var entity1 = new yuka.Entity();
entity1.addComponent(new MyComponent(1));
entityManager.add(entity1);
var entity2 = new yuka.Entity();
entity2.addComponent(new MyComponent(2));
entityManager.add(entity2);
// 更新 MyComponent 组件中 value 大于等于 2 的实体
entityManager.updateByComponent(MyComponent, function(component) {
if (component.value >= 2) {
component.value = 999;
}
});
entity
: 需要更新的实体对象。entities
: 需要更新的实体对象数组。componentType
: 需要更新的组件类型。updateFn
: 更新操作的回调函数。无返回值。