web-dev-qa-db-ja.com

Lua Scriptに「スリープ」または「待機」を追加する方法

時刻を変更することで、ゲームの簡単なスクリプトを作成しようとしていますが、高速で実行したいです。だからこれは私が話していることです:

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

等々。これをどうやってやるの?

12
Donavon Decker

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)
19
Yu Hao

Luasocketがインストールされている場合:

local socket = require 'socket'
socket.sleep(0.2)
3
konrad

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)
2
Lorenzo Donati

この自作関数の精度は10分の1秒以下です。

function sleep (a) 
    local sec = tonumber(os.clock() + a); 
    while (os.clock() < sec) do 
    end 
end
1
Mossarelli