【问题标题】:methods to select objects in a room在房间中选择对象的方法
【发布时间】:2014-12-10 09:33:34
【问题描述】:

鉴于我在房间里有一个小兵,除了“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; }});
}

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

【问题讨论】:

    标签: javascript screeps


    【解决方案1】:

    Room.find() 是目前遍历房间对象的唯一方法。

    顺便说一句,你可以简单地使用Game.SOURCES_ACTIVE常量而不是检查energy > 0

    【讨论】:

      【解决方案2】:

      如果有人读到此内容并感到困惑,则在提出/回答此问题后添加了一种新方法。 Game.getObjectById()

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

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

      【讨论】:

      • 是的,这比我原来的方法好得多。
      猜你喜欢
      • 2020-11-20
      • 2013-01-29
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      相关资源
      最近更新 更多