快速编辑:_G.i是我设置为创建24小时时间范围的1到24个表格。它全局存储在三级脚本中,并按如下方式实现:
_G.i = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}
所以我试图让这个循环与我创建的日/夜循环一起工作。我希望循环不断检查它是什么时间,并根据我设置的一些参数将该时间打印到控制台。
light = script.Parent.lightPart.lightCone
timeofday = ""
wait(1)
function checkTime()
for i, v in ipairs(_G.i) do
wait(1)
print(v)
print(timeofday)
if v > 20 and v < 6 then
timeofday = "night"
else
timeofday = "day"
end
end
end
while true do
checkTime()
wait(1)
end
出于某种原因,这只是在控制台中打印一天,即使我正确地循环。时间与昼夜脚本中的时间相同。我也会在这里发布。
function changeTime()
for i, v in ipairs(_G.i) do
game.Lighting:SetMinutesAfterMidnight(v * 60)
wait(1)
end
end
while true do
changeTime()
end
很抱歉,如果这篇文章很草率或者代码很草率,我对这两篇文章都很陌生。我一直试图自己解决这个问题,并且一直做得很好我最初不知道ipairs循环是什么但是我设法让它在夜间循环而不是无限等待(1)循环。
答案 0 :(得分:4)
您的问题就在于:
if v > 20 and v < 6 then
v
永远不会两者大于20且小于6.您需要or
逻辑运算符。
除此之外,我不确定你为什么要使用全球i
来保存1到24的数字列表?您可以使用ranging for loop获得相同的效果。此外,如果您要检查较低代码设置的当前时间,则应将时间值存储在全局变量中。像这样:
light = script.Parent.lightPart.lightCone
current_time = 0
function checkTime()
print(current_time)
if current_time > 20 or current_time < 6 then
timeofday = "night"
else
timeofday = "day"
end
print(timeofday)
end
while true do
checkTime()
wait(0.1)
end
function changeTime()
for v = 1, 24 do
game.Lighting:SetMinutesAfterMidnight(v * 60)
current_time = v
end
end
while true do
changeTime()
wait(1)
end
您执行此操作的方式的问题是您假设checkTime()
函数将始终在changeTime()
函数之后运行,这不一定是这种情况。