Roblox Lua脚本没有激活。

我有这段代码

local player = game.Players.LocalPlayer
local unitFrame = script.Parent
local buttona = unitFrame.buttonA
local sprinting = true

unitFrame.Title.Text = "Perks"
local function onButtonAClick()
    unitFrame.Title.Text = "perks"
end

local function sprintButton()
    if sprinting == false then
        sprinting = true
        player.Character.Humanoid.WalkSpeed = 20
        unitFrame.buttonA.Text = "strinting"
    end
    if sprinting == true then
        sprinting = false
        player.Character.Humanoid.WalkSpeed = 16
        unitFrame.buttonA.Text = "walking"
    end
end

buttona.MouseButton1Click:connect(sprintButton)

我想做的是一个切换奔跑状态的程序。唯一的问题是它只会执行一次就不会再执行了。我可以单击它并更改文本,然后再次单击它就不起作用了。我希望它能在每次按下按钮时都能正常工作。

点赞
用户3979429
用户3979429

在这个函数中,你检查了两个 if 语句。一个检查 sprinting 是否为 false,另一个检查它是否为 true。

理解你的问题的关键在于这两个 if 语句相互抵消。

让我们来详细分析一下。首先它检测 sprinting 是否为 false。不,sprinting 不是 false。然后它检查 sprinting 是否为 true。是的!接着它将其设置为 false。

目前为止还不错,对吧?但是这里出现了问题。当你再次尝试运行它时,sprinting 变成了 false。于是第一个 if 语句被执行,将其设置为 true。但是接下来立即执行了 ANOTHER if 语句。由于此时 sprinting 已经是 true,这个语句被执行,将其设置为 false。看起来好像什么都没发生。

那么你的解决办法是什么呢?去掉第一个 if 语句的结尾,并且将第二个 if 改为一个 elseif 语句。这样一旦一个语句被评估为 true,它就不会再去评估下一个语句了。

2015-12-25 05:30:39
用户3924687
用户3924687

你的逻辑不正确。正如 warspyking 所说,你的条件语句有问题。通过添加 elseif 语句来修复这个问题。

local function sprintButton()
    if not sprinting then
        sprinting = true
        player.Character.Humanoid.WalkSpeed = 20
        unitFrame.buttonA.Text = "sprinting"
    elseif sprinting then
        sprinting = false
        player.Character.Humanoid.WalkSpeed = 16
        unitFrame.buttonA.Text = "walking"
    end
end
2015-12-26 20:25:49