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()