Я пытаюсь написать некоторый код в функцию, чтобы его можно было легко использовать повторно, увеличивая глобальное значение.
Проблема в том, что есть несколько различных глобальных переменных, которыми можно манипулировать, и мне нужна функция, чтобы иметь возможность обрабатывать каждый из них.
Я думал, что мог бы просто поместить глобальную переменную в аргумент функции, но она, похоже, не работает.Вероятно, потому что 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, чтобы иметь возможность манипулировать глобальной переменной, которая используется в качестве аргумента?
Хороший квалификатор может состоять в том, что этот код зацикливается, и поэтому требует внешнегопеременная в качестве счетчика.