// GameWorld
PooledEngine engine = new PooledEngine();
// Gun class
class Gun {
publc Gun(Entity entity) {
createComponents();
addComponents();
}
public Entity getEntity();
}
// Option 1
Gun gun = new Gun(engine.createEntity());
engine.addEntity(gun.getEntity());
// Option 2 or a simple method inside EntityFactory class
public Entity createGun() {
Entity gun = engine.createEntity();
// components creation here
..
engine.addEntity(gun);
return gun;
}
Вопрос который один является лучшим способом создания в Entity
сделаны из PooledEngine
?Каков правильный способ создания объекта в libgdx ashley ecs framework?
- вариант 1, я создаю новый
class
под названиемGun
затем обработать создание компонентов там. вариант 2, Внутри
EntityFactory
class
добавить новый метод называетсяcreateGun()
class EntityFactory { // constructor public void build() { // Option 1 Gun gun = new Gun(engine.createEntity()); // where I can call gun.fire(), gun.reload(), gun.dispose, and so on.. engine.addEntity(gun.getEntity()); // Option 2 Entity gun = createGun(); engine.addEntity(gun); } public Entity createGun() { Entity gun = engine.createEntity(); // components creation here ... engine.addEntity(gun); return gun; } } EntityFactory factory = new EntityFactory(world, engine); factory.build();
Что делать, если я добавил состояния, методы на моем классе оружия? как вы думаете, теперь лучше создать новую обертку? – ronscript
Я отмечу это как ответ, я думаю, что буду использовать шаблон строителя. Благодаря! Это мне очень помогает! – ronscript