我的内存有问题。它应该存储我的所有数据(而不是对象),但它会不时重置。 这是一个例子:
Memory.creeps_idx = 0;
module.exports.loop = function () {
console.log("c_idx:", Memory.creeps_idx, Game.time);
if(Memory.creeps_idx==0)
{
Memory.creeps_idx+=1;
}
}
这是从控制台输出的。
[13:41:01]c_idx: 0 1115
[13:41:03]c_idx: 1 1116
[13:41:05]c_idx: 0 1117
[13:41:07]c_idx: 1 1118
[13:41:09]c_idx: 1 1119
[13:41:11]c_idx: 1 1120
[13:41:13]c_idx: 1 1121
[13:41:15]c_idx: 1 1122
[13:41:17]c_idx: 0 1123
[13:41:19]c_idx: 1 1124
[13:41:21]c_idx: 1 1125
[13:41:23]c_idx: 1 1126
[13:41:25]c_idx: 1 1127
你能告诉我为什么creeps_idx会将值更改为0吗? (这是在模拟器中测试的)
答案 0 :(得分:2)
基本上,module.exports.loop之外的任何内容每隔几个滴答就运行一次。这就是为什么在原始示例中将creep_idx重置为原因,以及为什么您的解决方案有效。
这里的新功能是主模块的执行方式。在旧式架构中,它每执行一次,每个tick都会执行所需的每个模块。在新体系结构中,主模块应包含在游戏循环中执行的module.exports.loop函数,而其他主模块内容仅在实例化新的全局后执行。
http://support.screeps.com/hc/en-us/articles/204825672-New-main-loop-architecture
答案 1 :(得分:0)
我自己找到了解决方案。
module.exports.loop = function () {
if (!Memory.creeps_idx) Memory.creeps_idx = 0;
console.log("c_idx:", Memory.creeps_idx, Game.time);
if(Memory.creeps_idx==0)
{
Memory.creeps_idx+=1;
}
}