Screeps中的Spawns可以使用记忆吗?

时间:2018-03-04 23:02:10

标签: memory screeps

Spawns可以留住记忆吗?我无法找到准确的答案,我的代码显示Spawns不会保留内存,这不是我在API和Docs中读到的内容。

http://screeps.wikia.com/wiki/Memory

我测试Spawns是否有内存的代码如下(有意义的摘录):

StructureSpawn.prototype.whatever = function() {
  this.memory.count = 12;
  console.log(this.memory.count);
}

现在,上面的代码,当由main.js运行时,确实返回12,但是当我注释掉赋值行时,它会丢失该值并返回undefined。

我到底错过了什么?

我知道我不能在内存中存储对象,但数字?!甚至不是字符串?

顺便说一句,这都不起作用(从文档中复制)。

Game.spawns.Spawn1.memory.count = 12;

1 个答案:

答案 0 :(得分:2)

myspawn.memory只是对Memory.spawns [myspawn]的引用。

所有变量都在进入JSON.stringify和JSON.parse的路上运行。

let myobj= { 'hello' : 'world' }
Games.spawns[myspawn].memory.remember= myobj;
console.log(Games.spawns[myspawn].memory.remember.hello);

相同
let myobj= { 'hello' : 'world' }
Memory.spawns[myspawn].remember= myobj;
console.log(Memory.spawns[myspawn].remember.hello);

为了扩展它,您可以在Memory结构中的任何位置创建变量,甚至可以在根目录上创建变量。在您的控制台中尝试复制粘贴

Memory.foo = "bar";

然后检查您的内存选项卡,并查看内存根目录。在内存选项卡中,您可以直接修改它或完全删除它。

您可能错误地解决了生成问题。尝试在控制台中键入这一系列命令,将“blech”替换为您的spawn名称

delete Game.spawns.blech.memory;  
console.log(JSON.stringify(Game.spawns.blech.memory));    
Game.spawns.blech.memory = {"Hello" : "World"}; 
console.log(JSON.stringify(Game.spawns.blech.memory));