我正在尝试将一些代码编写到函数中,以便可以轻松地重用它,从而增加了全局值。
问题在于可以操纵多个不同的全局变量,而我需要该函数能够处理每个全局变量。
我以为我可以将全局变量简单地放入函数的自变量中,但它似乎不起作用。可能是因为lua创建了它所需要的全局变量的副本。
是否有办法确保它操作的全局变量不仅仅是副本?
我已经尝试确保所有相关变量都保持局部状态,但是问题是它们都在循环中,因此需要保持在循环外部才能正确增加。
现在,我必须为每种增量情况编写一个单独的函数,如果可以的话,这有点不合时宜。
现在我必须做这样的事情
foo_time_1 = 0
foo_time_2 = 0
function foo_time_1(var)
foo_time_1 += 2
if foo_time < 2 then
sfx(02)
end
end
function foo_time_2(var)
if foo_time_2 < 2 then
sfx(02)
end
end
这允许代码按预期运行,但是理想情况下,我希望代码看起来像这样:
foo_time = 0
foo_time_2 = 0
function foo_time_manipulator(global_var, len, sfx)
global_var += 2
if global_var < len then
play(sfx)
end
end
//so I can write
foo_time_manipulator(foo_time, 2, 02)
foo_time_manupulator(foo_time_2, 3, 02)
这样做的问题是,全局变量不会改变,因此在重新读取函数的每一帧时,声音效果都会不断循环,并且它会看到全局变量保持在用作参数的值处,而不是更新的变量。
很抱歉,如果这个问题的措词不当,很难说清楚。
lua中是否有任何方法可以操纵用作参数的全局变量?
一个好的限定词可能是该代码正在循环,因此需要一个外部变量作为计数器。
答案 0 :(得分:0)
您可以尝试以下方法:
function foo_time_manipulator(global_var_name, len, six)
local global_var = _G[global_var_name]
global_var = global_var + 2
if global_var < len then
play(sfx)
end
end
并像这样使用它
foo_time_manipulator("foo_time", 2, 02)
foo_time_manupulator("foo_time_2", 3, 02)