在我正在开发的游戏中,我有一个应该根据指数水平触发的推进系统:
function machinesOwnedAdvancement(machine,machineLevel) {
if (machine >= Math.pow(2,(machineLevel+5))) {
console.log(machineLevel);
machineLevel += 1;
console.log("Machine is upgraded. It is now level: " + machineLevel);
}
}
该函数将这样调用:
machinesOwnedAdvancement(scribes, scribesAdvancementLevel);
这里scribes是拥有的机器数,而scribesAdvancementLevel最初是0。想法是,它应该“将”进步等级加1。 console.log建议这样做,但是当下一个游戏计时发生时(即再次调用该函数),console.log(machineLevel)仍为0。
也许我误会了如何使用函数参数来操纵变量?
答案 0 :(得分:1)
machineLevel
是一个局部变量,这意味着只要函数存在,它就会丢弃该变量。您应该返回一个值,然后将其存储在一个变量中,以便以后传递给它。
这是一个非常简单的例子。
let scribe = 10,
advancementLevel = 1;
function machinesOwnedAdvancement(machine,machineLevel) {
if (machine >= Math.pow(2,(machineLevel+5))) {
console.log(machineLevel);
machineLevel += 1;
console.log("Machine is upgraded. It is now level: " + machineLevel);
}
return machineLevel;
}
advancementLevel = machinesOwnedAdvancement(scribe, advancementLevel);
console.log(advancementLevel);