Timer 如何添加一个“;“睡眠”;或;“等等”;我的Lua脚本?

Timer 如何添加一个“;“睡眠”;或;“等等”;我的Lua脚本?,timer,lua,sleep,wait,Timer,Lua,Sleep,Wait,我试图通过改变一天中的时间来为一个游戏制作一个简单的脚本,但我想用一个快速的动作来完成。这就是我要说的: function disco ( hour, minute) setTime ( 1, 0 ) SLEEP setTime ( 2, 0 ) SLEEP setTime ( 3, 0 ) end 等等。我该怎么做呢?Lua不提供标准的睡眠功能,但有几种方法可以实现,请参阅以获取详细信息 对于Linux,这可能是最简单的: function sleep(n) os.execute("sl

我试图通过改变一天中的时间来为一个游戏制作一个简单的脚本,但我想用一个快速的动作来完成。这就是我要说的:

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

等等。我该怎么做呢?

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

对于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)
有三种睡眠功能:

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)

此自制函数的精度可降至十分之一秒或更短

function sleep (a) 
    local sec = tonumber(os.clock() + a); 
    while (os.clock() < sec) do 
    end 
end
功能睡眠(a)
本地秒=t编号(操作系统时钟()+a);
而(os.clock()<秒)执行
结束
结束

如果已安装luasocket:

local socket = require 'socket'
socket.sleep(0.2)
函数等待(时间)
本地持续时间=os.time()+时间
而os.time()

这可能是在脚本中添加等待/睡眠功能的最简单方法之一。如果您使用的是MacBook或基于UNIX的系统,请使用以下方法:

function wait(time)
if tonumber(time) ~= nil then
os.execute("Sleep "..tonumber(time))
else
os.execute("Sleep "..tonumber("0.1"))
end
wait()

@DonavonDecker遵循链接中的其他方法。有几种适用于windows的软件。例如,编写一个C扩展名是不理解的,但是当我尝试链接中的另一个方法时,我得到一个错误,说“尝试索引全局'os'nil value”@DonavonDecker,这很奇怪,因为
os
是一个标准的Lua库,我自己在Windows XP下使用
ping
对该库进行了测试,效果很好。你使用的是什么版本的Lua?我想他使用的游戏引擎不提供
os
库。如果是,请指定哪一个,因为它更有可能提供更好的解决方案。对于在Android移动设备上玩的游戏来说,这是一个好的解决方案吗?不要忘记,这是一个繁忙的等待,如果你想在视频游戏或应用程序的帧中使用Lua,则需要占用处理器时间,也许wxLua或其他库可以提供更少的资源渴求睡眠功能。我提供的sleep函数对于在较小的脚本和不太严重的项目中进行错误测试、自动化非常有用?
function wait(time)
if tonumber(time) ~= nil then
os.execute("Sleep "..tonumber(time))
else
os.execute("Sleep "..tonumber("0.1"))
end
wait()