時刻を変更することで、ゲームの簡単なスクリプトを作成しようとしていますが、高速で実行したいです。だからこれは私が話していることです:
function disco ( hour, minute)
setTime ( 1, 0 )
SLEEP
setTime ( 2, 0 )
SLEEP
setTime ( 3, 0 )
end
等々。これをどうやってやるの?
Luaは標準のsleep
関数を提供していませんが、実装する方法はいくつかあります。詳細は Sleep Function を参照してください。
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)
Luasocketがインストールされている場合:
local socket = require 'socket'
socket.sleep(0.2)
wxLua には3つのスリープ機能があります。
local wx = require 'wx'
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)
この自作関数の精度は10分の1秒以下です。
function sleep (a)
local sec = tonumber(os.clock() + a);
while (os.clock() < sec) do
end
end