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;
答案 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));