Я создаю игру, используя lua; Мне нужен таймер для запуска во время игровых перерывов, а также во время игровых раундов. Игра изначально выполняется с перерывом в 15 секунд. В этом случае таймер работает нормально, но последующие вызовы функции, похоже, не вызывают его вообще ... какие-либо советы?
Я пытался поменять метод создания сопрограммы на coroutine.wrap () вместо coroutine.create ().
При успешном запуске после первого вызова состояние сопрограммы по-прежнему кажется уступающим.
Упрощенная логика показана здесь: где секунды - это int, а окончание - логическое значение
module.startTimer = coroutine.create(function(seconds,ending)
wait()
print("Timer starting with: "..seconds.." seconds...round ending: "..tostring(ending))
while seconds > -1 do
wait(1)
seconds = seconds - 1
end
if ending == true then
coroutine.yield(module.startTimer)
else
coroutine.yield(module.startTimer)
end
end)
Первый звонок (работает):
print(coroutine.status(module.startTimer))
coroutine.resume(module.startTimer,15,false)
wait(1)
print(coroutine.status(module.startTimer))
отпечатки: приостановлено, приостановлено
Второй вызов (не работает): где RoundLength.Value - проверяемое значение типа int (300), которое успешно печатается.
print(coroutine.status(module.startTimer))
coroutine.resume(module.startTimer,CURRENT_ROUND:FindFirstChild("RoundLength").Value,true)
wait()
print(coroutine.status(module.startTimer))
wait(CURRENT_ROUND:FindFirstChild("RoundLength").Value)
Ничего не печатает, выполнение не выполняется, startTimer не печатает статус.