roblox lua脚本未激活

Posted

技术标签:

【中文标题】roblox lua脚本未激活【英文标题】:roblox lua script not activating 【发布时间】:2016-03-31 06:38:22 【问题描述】:

所以我有这个代码

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)

我想做的是制作一个短跑切换程序。唯一的问题是它会工作一次然后根本不起作用。我可以单击它并更改文本,然后当我再次单击它时它什么也不做。我希望它能够在你每次按下它时工作。

【问题讨论】:

连接的处理程序是否触发一次然后需要重新连接?他们是否需要返回 truefalse 或其他东西来保持联系?更改按钮的文本会断开处理程序吗? 嗯,我不这么认为。 基于 roblox wiki 上的此代码,您可以切换它,所以我不知道发生了什么local button = script.Parent local sound = button:WaitForChild('Sound') sound:Play() local function onButtonClick() if sound.IsPlaying then button.Image = 'rbxgameasset://Images/MusicOff' sound:Stop() else button.Image = 'rbxgameasset://Images/MusicOn' sound:Play() end end button.MouseButton1Click:connect(onButtonClick) 我很困惑,你还没有回复我的回答,它有用吗? 【参考方案1】:

在您测试 2 个 if 语句的函数中。如果冲刺是假的,如果是真的。

理解你的问题的关键是你的 if 语句相互抵消。

让我们来看看这个,首先它会检测它是否为假。不,短跑不是假的。然后 if 检查它是否为真。它是!所以它将它设置为 false。

到目前为止很棒,对吧?那么这是你的问题。当您再次尝试时,冲刺是错误的。因此,第一个 if 语句运行,并将其设置为 true。但是,随后立即运行另一个 if 语句。由于它现在为 true,因此运行,将其设置为 false。似乎什么也没发生。

您的解决方案?取出第一个 if 语句的结尾,并将第二个 if 替换为 elseif。这样,一旦一个语句评估为真,它就不会评估下一个。

【讨论】:

【参考方案2】:

你的逻辑不正确。正如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

【讨论】:

不要冒犯他人,但这个答案的意义何在?你重申了我所说的,几乎没有解释为什么会这样。 @warspyking 不那么明显,但 OP 可能会喜欢一个 VISUAL 示例。这就是 ***,每个人都在他们认为其他人缺乏的地方做出贡献。 点了,但现在他有 2 个带有解释的示例和示例。他应该接受哪个? @warspyking 通常,在 *** 上,OP 会接受你的回答,但支持我的回答。 这可能永远不会发生,他似乎已经消失了。

以上是关于roblox lua脚本未激活的主要内容,如果未能解决你的问题,请参考以下文章

Lua 刷新脚本 (ROBLOX)

如何使脚本影响 Roblox LUA 中的所有子级?

ROBLOX Lua 脚本中的错误:“=”应在“<eof>”附近

Roblox Lua开发

在 LocalScript (Roblox LUA) 中创建抽象对象

Lua (Roblox) 如何从 Localscript 调用某些东西