任何人都可以看到这个Roblox脚本有什么问题吗?

时间:2018-06-06 17:28:00

标签: lua roblox

有人可以看到这个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

2 个答案:

答案 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