【问题标题】:ipairs loop always returning just one of the values in lua?ipairs循环总是只返回lua中的一个值?
【发布时间】:2017-11-16 18:04:35
【问题描述】:

快速编辑:_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)循环一起工作。

【问题讨论】:

  • 你能把你填充_G.i的代码包括进来吗?
  • 是的,很简单,这就是脚本所包含的全部内容_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}

标签: lua roblox


【解决方案1】:

你的问题是:

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() 函数之后运行,但情况不一定如此。

【讨论】:

  • 非常感谢!我知道这与那条线有关,但我非常想弄清楚它,我让简单的逻辑从我的脑海中溜走。我还将添加更简单的循环,因为它稍后可能会对我有所帮助。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-02-24
  • 2017-04-03
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
  • 2015-02-01
相关资源
最近更新 更多