如何从 ROBLOX 的开始菜单 GUI 加载我的工作区?

Posted

技术标签:

【中文标题】如何从 ROBLOX 的开始菜单 GUI 加载我的工作区?【英文标题】:How can I load my workspace from my start menu GUI in ROBLOX? 【发布时间】:2020-11-04 05:05:21 【问题描述】:

我正在制作 ROBLOX 游戏,但我遇到了 GUI 问题:

我有一个“开始游戏”按钮,但我有一个 elif 语句,当您单击它时,它只是从“开始游戏”到“游戏加载...”来回切换。如何更改它而不是说“游戏加载中...”,当您单击它时,它会转换到实际游戏(我的工作区)?

我什至不希望“游戏加载中...”出现,我只是在学习按钮的来龙去脉时才放在那里。

我的 GUI 只是开始菜单,所以当您单击开始游戏时,GUI 应该会消失,您会被加载到实际游戏中。

这是我为按钮编写的脚本:

local button = script.Parent
local toggled = false

local function onButtonActivated()
    if toggled == false then
        button.Text = "Game Loading..."
        toggled = true
    else
        button.Text = "Start Game"
        toggled = false
    end
end

button.Activated:Connect(onButtonActivated)

注意:我通过 IntelliJ 使用 Lua(ROBLOX 的默认语言),只是将完成的代码复制粘贴到脚本中,因为 IntelliJ 的文本编辑器比 ROBLOX 的默认编辑器好得多。

【问题讨论】:

【参考方案1】:

如果这个地方只是一个带有开始菜单的中心,而实际游戏在宇宙的其他地方,那么你需要使用TeleportService:Teleport()LocalPlayer 移动到那个地方游戏。传送完成后,玩家将能够毫无问题地玩该游戏。这是使用您的代码示例的示例:

local button = script.Parent
local toggled = false
local destination = 0 -- Change 0 to the place ID you want the user to be teleported to
local TeleportService = game:GetService("TeleportService")

local function onButtonActivated()
    if toggled == false then
        button.Text = "Game Loading..."
        --toggled = true
        TeleportService:Teleport(destination)
    else
        button.Text = "Start Game"
        toggled = false
    end
end

button.Activated:Connect(onButtonActivated)

但是,如果您在实际游戏中加载此 GUI,您只需:Destroy() GUI 对象即可。这将永久地将 GUI 对象及其所有子对象移动到nil 下,并断开所有连接。

在游戏中,这意味着 GUI 会消失,玩家可以继续玩游戏。除非您在 GUI 中运行其他关键代码,否则如果您只在一个地方工作,这应该是首选解决方案。

local button = script.Parent
local toggled = false
local guiObj = nil -- Replace nil with a reference to the "ScreenGui/BillboardGUI" object that houses the 'button'.

local function onButtonActivated()
    if toggled == false then
        --[[button.Text = "Game Loading..."
        toggled = true]]--
        guiObj:Destroy()
    else
        button.Text = "Start Game"
        toggled = false
    end
end

button.Activated:Connect(onButtonActivated)

【讨论】:

非常感谢!然而,即便如此,当我点击开始游戏时,什么也没有发生。 @Stealth 开发者控制台中是否出现任何错误?所以我们可以更好地帮助你,你用什么方法? (DestroyTeleport?) 没有我知道的错误。 IntelliJ 希望我只删除“-- nil”,因为它是“不必要的斜体”,但即便如此它也不起作用。哦,还有,我使用了 Destroy。【参考方案2】:
local button = script.Parent
local guiObj = --a reference to the main screengui which the button is a descendant of

local function onButtonClicked()
    guiObj:Destroy()
end

button.MouseButton1Click:Connect(onButtonClicked)

如果你愿意,你可以做一些花哨的褪色之类的东西。

【讨论】:

以上是关于如何从 ROBLOX 的开始菜单 GUI 加载我的工作区?的主要内容,如果未能解决你的问题,请参考以下文章

当它应该出现时框架没有出现......(ROBLOX GUI)

如何在 Roblox 中打开和关闭 gui?

如何在 Roblox Studio 中解锁鼠标

在 Roblox 中动态创建的 GUI

为啥我的roblox gui在studio的测试区显示而在游戏中却没有

如何在特定点循环 ROBLOX 音频?