有人可以看到这个Roblox脚本有什么问题吗?
local a1 = game.CoreGui.DBXBRGUI.Menu
local a2 = game.CoreGui.DBXBRGUI.Opener
if a1.Visible == true then do
a2.Visible = false
elseif a2.Visible == true then do
a1.Visible = false
end
答案 0 :(得分:1)
首先,不要在“然后”之后加上“做”(这是你的问题)
其次,只要使用else not else,因为某些东西可能不同。
这应该是这样的:
local a1 = game.CoreGui.DBXBRGUI.Menu
local a2 = game.CoreGui.DBXBRGUI.Opener
if a1.Visible == true then
a2.Visible = false else
a1.Visible = false
end
我使用常识来说这可能是你想要的:
local a1 = game.CoreGui.DBXBRGUI.Menu
local a2 = game.CoreGui.DBXBRGUI.Opener
if a1.Visible == true then
a1.Visible = true
a2.Visible = false else
a1.Visible = false
a2.Visible = true
end
答案 1 :(得分:0)
首先,您试图引用CoreGui,它严格用于Roblox的默认GUI。您制作的任何自定义GUI都将出现在每个玩家的PlayerGui中。这是通过做game.Players.LocalPlayer.PlayerGui引用的。 值得注意的是,对于任何客户端(例如GUI),您应该在尝试使用它们之前检查对象是否存在。这是通过父:FindFirstChild(name)或parent:WaitForChild(name)函数完成的。
其次,您在条件语句中使用了" do-end" -block。 A" do-end"块需要结束。你也不需要那个块,所以我建议删除它。如果我们将结尾添加到代码中的正确位置,我们会得到:
if CONDITION then
do
-- stuff
end -- you're missing this end
elseif CONDITION2 then
do
end -- you're also missing this end
end
由于缺少结尾,您的代码解释如下:
if CONDITION then
do
elseif CONDITION2 then
do
end
如你所见," elseif"出现在第一个if里面的do-block里面,而不是作为第一个if的elseif。如果没有if,你就不能拥有" elseif" -statement,这就是错误。
您的代码理想情况如下:
local Gui = game.Players.LocalPlayer.PlayerGui:WaitForChild("DBXRGUI")
local a1 = Gui.Opener
local a2 = Gui.Menu
if a1 == true then
a1.Visible = false
elseif a2.Visible == true then
a2.Visible = false
end