Вопрос по timer, lua, sleep, wait – Как добавить «сон» или «ждать» в мой Lua Script?

9

Я пытаюсь сделать простой сценарий для игры, меняя время дня, но я хочу сделать это быстро. Так вот что яЯ говорю о:

function disco ( hour, minute)
setTime ( 1, 0 )
SLEEP
setTime ( 2, 0 )
SLEEP
setTime ( 3, 0 )
end

и так далее. Как бы я поступил так?

Ваш Ответ

4   ответа
1

еньше.

function sleep (a) 
    local sec = tonumber(os.clock() + a); 
    while (os.clock() < sec) do 
    end 
end
Если вы хотите, чтобы Lua не работал в ожидании использования в фреймах для видеоигр или приложений, возможно, wxLua или другие библиотеки могут обеспечить меньше функций, требующих сна. Предоставляемая мной функция сна полезна для тестирования ошибок, автоматизации небольших сценариев и менее серьезных проектов. Mossarelli
дон»забудь, что это занятое ожидание, отнимающее процессорное время Bernardo Ramos
13

sleep функции, но есть несколько способов реализовать один, см.Функция сна для деталей.

Для Linux это может быть самым простым:

function sleep(n)
  os.execute("sleep " .. tonumber(n))
end

В Windows вы можете использовать:ping

function sleep(n)
  if n > 0 then os.execute("ping -n " .. tonumber(n+1) .. " localhost > NUL") end
end

Тот, который используетselect заслуживает некоторого внимания, потому что это единственный портативный способ получить разрешение менее секунды:

require "socket"

function sleep(sec)
    socket.select(nil, nil, sec)
end

sleep(0.2)
Я понимаю, но когда я пытаюсь другой метод в ссылке, я получаю сообщение об ошибке "попытка индексировать глобальныйОперационные системы' нулевое значение Donavon Decker
@DonavonDecker That 'странно, потому чтоos это стандартная библиотека Lua, и я проверил ту, используяping под Windows XP сам, и работает нормально. Какую версию Lua вы используете? Yu Hao
м с использованием Windows 7 Donavon Decker
Это хорошее решение для игры, которая 'Предполагается, что играть на мобильном устройстве Android? Jeff Zivkovic
2

wxLua имеет три функции сна:

wx.wxSleep(12)   -- sleeps for 12 seconds
wx.wxMilliSleep(1200)   -- sleeps for 1200 milliseconds
wx.wxMicroSleep(1200)   -- sleeps for 1200 microseconds (if the system supports such resolution)
3

Если у вас установлен luasocket:

local socket = require 'socket'
socket.sleep(0.2)
Как установить пакет lua? Nishanth

Похожие вопросы