【问题标题】:adding then accessing memory on controller添加然后访问控制器上的内存
【发布时间】:2022-03-24 09:27:29
【问题描述】:
if (this.controller && !this.controller.memory) this.controller.memory = { containerid: null, linkid: null };

后来我有这个:

if (creep.room.controller.memory) {//do code}

由于某种原因,当我尝试从cree 访问它时它失败了(我遇到了else 条件)我错过了什么?

【问题讨论】:

    标签: javascript screeps


    【解决方案1】:

    控制器在 Creeps 等属性中没有内存简写。

    像 Screeps 中的大多数东西一样,StructureController 没有内存。 See Screeps Docs

    您必须将 Creeps、Rooms、Spawns 记录到 Memory 以及所有其他内容! Creeps、Spawns 等 Screeps 对象不会将内存存储在它们自己的属性中,而是存储在 Memory Object 中。

    不要像你试图做的那样向对象添加内存!这是一个陷阱! 我建议你把Controller Memory写在他的Room Memory中。

    Memory.rooms[controller.room.name]
    

    我不知道您如何访问您的控制器。 如果您使用 Room 名称访问 Controller:

    // Your Room. Random example: "E12N36" 
    let room = Game.rooms[room_name]
    let controller = room.controller
    
    // Add into the Room Memory your information about/for/with controller 
    room.memory.controllerOfRilcon = {
       name: "Not",
       sure_name: "Sure",
       NumberOfPokeballs: "FullOfBits",
       Nanani: "Done",
       Nanana: "TryToThink"
    }
    

    您可以在文档中看到非常重要的一点内存如何工作Documentation-CreepMemory

    Game.creeps[name].memory 只是访问对象 Memory.creeps[name] 的简写。是对象内存,它包含了内存的真实数据。

    对象中没有内存!

    【讨论】:

      猜你喜欢
      • 2019-09-25
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多