选择房间中物体的方法

时间:2014-11-23 23:42:06

标签: javascript screeps

鉴于我在房间里有一个蠕变,除了“Game.creeps.creep.room.find(Game。)”之外还有其他任何方法来获取房间中的物体吗?

像.room.sources这样的东西?

因为我目前正在使用它:

var creep;
var target;
creep = Game.creeps.Creep1;
if(!creep.memory.target) {
  target = creep.pos.findNearest(Game.SOURCES,{filter:function(s) { return s.energy > 0; }});
  creep.memory.target = target.id;
}
else{
  target = creep.room.find(Game.SOURCES,{filter:function(s) { return s.id == creep.memory.target; }});
}

由于过滤器,这似乎有点慢。

2 个答案:

答案 0 :(得分:2)

Room.find()是目前迭代房间物体的唯一方法。

顺便说一下,您可以简单地使用energy > 0常数来代替Game.SOURCES_ACTIVE

答案 1 :(得分:0)

如果有人读到这个并且感到困惑,那么自从提出/回答这个问题以来,就添加了一个新方法。 Game.getObjectById()

在上面的代码中,您可以将else块中的语句替换为:

target = Game.getObjectById(creep.memory.target);