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

我正在制作一个 ROBLOX 游戏,其中有一个 GUI 问题:

  • 我有一个“开始游戏”按钮,但我在 elif 语句中将其设置为在单击时从“开始游戏”切换到“游戏加载中...”并来回切换。如何更改它,使其在单击时不是说“游戏正在加载...”,而是转换为实际的游戏(我的工作区)?

我甚至不想让“游戏正在加载...”出现,我只是在学习按钮的各个方面时把它放在那里。

我的 GUI 只是开始菜单,所以当您单击“开始游戏”时,GUI 应该消失,并加载实际游戏。

下面是我为按钮编写的脚本:

local button = script.Parent
local toggled = false

local function onButtonActivated()
    if toggled == false then
        button.Text = "游戏正在加载..."
        toggled = true
    else
        button.Text = "开始游戏"
        toggled = false
    end
end

button.Activated:Connect(onButtonActivated)

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

点赞
用户12539122
用户12539122

如果这个地方只是一个起始菜单的枢纽,而 实际的 游戏则在宇宙的其他地方,那么你需要使用 TeleportService:Teleport()LocalPlayer 移动到那个游戏。传送完成后,玩家就能毫无问题地玩那个游戏。这里有一个使用你提供的代码示例的例子:

local button = script.Parent
local toggled = false
local destination = 0 -- 将 0 更改为你想要将用户传送到的地方 ID
local TeleportService = game:GetService("TeleportService")

local function onButtonActivated()
    if toggled == false then
        button.Text = "游戏加载中……"
        --toggled = true
        TeleportService:Teleport(destination)
    else
        button.Text = "开始游戏"
        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 -- 将 nil 替换为引用“ScreenGui/BillboardGUI”对象的父对象,它包含 'button'。

local function onButtonActivated()
    if toggled == false then
        --[[button.Text = "游戏加载中……"
        toggled = true]]--
        guiObj:Destroy()
    else
        button.Text = "开始游戏"
        toggled = false
    end
end

button.Activated:Connect(onButtonActivated)
2020-07-15 02:16:46
用户88888888
用户88888888
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)

如果你想的话,你可以做一些花哨的淡入淡出效果。

2020-08-06 21:55:54