如何在我的Lua脚本中添加"睡眠"或"等待"?

Don*_*ker 14 lua sleep timer wait

我正在尝试通过改变一天中的时间为游戏制作一个简单的脚本,但我想以快速的方式进行.所以这就是我所说的:

function disco ( hour, minute)
setTime ( 1, 0 )
SLEEP
setTime ( 2, 0 )
SLEEP
setTime ( 3, 0 )
end
Run Code Online (Sandbox Code Playgroud)

等等.我该怎么做呢?

Yu *_*Hao 21

Lua不提供标准sleep功能,但有几种方法可以实现,有关详细信息,请参阅睡眠功能.

对于Linux,这可能是最简单的一个:

function sleep(n)
  os.execute("sleep " .. tonumber(n))
end
Run Code Online (Sandbox Code Playgroud)

在Windows中,您可以使用ping:

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

使用的那个select值得注意,因为它是获得亚秒级分辨率的唯一可移植方式:

require "socket"

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

sleep(0.2)
Run Code Online (Sandbox Code Playgroud)

  • 我认为他使用的游戏引擎不提供“os”库。如果是,请指定哪一个,因为它更有可能提供更好的解决方案。 (2认同)

kon*_*rad 6

如果你安装了 luasocket:

local socket = require 'socket'
socket.sleep(0.2)
Run Code Online (Sandbox Code Playgroud)

  • 如何安装lua包? (2认同)

Mos*_*lli 5

这个自制函数的精度低至十分之一秒或更小。

function sleep (a) 
    local sec = tonumber(os.clock() + a); 
    while (os.clock() < sec) do 
    end 
end
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记这是一个繁忙的等待,消耗处理器时间 (6认同)