2017-05-14 122 views
0

我遇到內存問題。它應該存儲我的所有數據(不是對象),但它會不時重置。 這是例子: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; 
    }  
} 

這是從控制檯輸出。

[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

我自己找到了解決方案。

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

基本上,module.exports.loop之外的任何東西都會每隔幾個滴答運行一次。這就是爲什麼creep_idx在您的原始示例中重置爲什麼以及您的解決方案工作原因。

這裏有什麼新東西是你主模塊執行的方式。在舊式體系結構中,每執行一次刻度就執行一次,並且每個刻度都執行所需的每個模塊。在新的體系結構中,你的主模塊應該包含在遊戲循環中執行的module.exports.loop函數,而主模塊內容的其餘部分只有在實例化新的全局模塊後才能執行。

http://support.screeps.com/hc/en-us/articles/204825672-New-main-loop-architecture