Javascript Screeps-内存中的属性重置

Javascript Screeps-内存中的属性重置,javascript,screeps,Javascript,Screeps,我的记忆力有问题。它应该能够存储我的所有数据(不是对象),但它会不时重置。 例如: 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; } } 这是控制台的输出

我的记忆力有问题。它应该能够存储我的所有数据(不是对象),但它会不时重置。 例如:

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

你能告诉我为什么爬行idx将值更改为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;
    }
}

我自己找到了解决办法

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;
    }
}

基本上,module.exports.loop之外的任何内容每隔几次运行一次。这就是为什么在您的原始示例中,screw_idx被重置为的原因,也是您的解决方案工作的原因

这里的新功能是主模块的执行方式。在旧式的体系结构中,它会在每一个滴答声中执行,它所需要的每个模块也会在每一个滴答声中执行。在新的体系结构中,主模块应包含在游戏循环中执行的module.exports.loop函数,而其余的主模块内容仅在实例化新全局后执行


基本上,module.exports.loop之外的任何内容每隔几次运行一次。这就是为什么在您的原始示例中,screw_idx被重置为的原因,也是您的解决方案工作的原因

这里的新功能是主模块的执行方式。在旧式的体系结构中,它会在每一个滴答声中执行,它所需要的每个模块也会在每一个滴答声中执行。在新的体系结构中,主模块应包含在游戏循环中执行的module.exports.loop函数,而其余的主模块内容仅在实例化新全局后执行