鉴于我在房间里有一个蠕变,除了“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; }});
}
由于过滤器,这似乎有点慢。
答案 0 :(得分:2)
Room.find()
是目前迭代房间物体的唯一方法。
顺便说一下,您可以简单地使用energy > 0
常数来代替Game.SOURCES_ACTIVE
:
答案 1 :(得分:0)
如果有人读到这个并且感到困惑,那么自从提出/回答这个问题以来,就添加了一个新方法。 Game.getObjectById()
在上面的代码中,您可以将else块中的语句替换为:
target = Game.getObjectById(creep.memory.target);