屏幕 UI 容器

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

ScreenGui 容器持有 GuiObjects 以在玩家的屏幕上显示,包括 框架标签按钮 等。所有屏幕上的 UI 对象和代码都存储并在客户端更改。

示例 ScreenGui,包含多个 GuiObject 子项,包括一个 Frame、TextLabel、TextBox 和 ImageButton。

要将 ScreenGui 及其子 GuiObjects 显示给每个加入游戏的玩家,请将其放置在 StarterGui 容器内。当玩家加入游戏并且他们的角色首次生成时,ScreenGui 及其内容会克隆到该玩家的 PlayerGui 容器中,该容器位于 Players 容器内。

ScreenGui 从 StarterGui 克隆到玩家的 PlayerGui 的示意图

随着游戏范围的扩大,您可能需要多个屏幕界面,例如标题屏幕、设置菜单、商店界面等。在这种情况下,您可以在 StarterGui 中放置多个独特的 ScreenGui 容器,并根据它们是否应可见和活动来切换每个容器的 Enabled 属性(当为 false 时,内容将不会渲染、处理用户输入或响应更改)。

资源管理器层次结构显示多个 ScreenGui 容器,一个启用,其他禁用,以控制在给定时间哪些可见。

Enabled 属性可以通过 属性 窗口最初切换,或者您可以在游戏运行时通过 访问 玩家 PlayerGui 并将其设置为 truefalse 来设置所需容器的状态。

容器属性

以下属性允许您自定义多个设备上的 屏幕内边距、使用多个屏幕容器时的 显示顺序 等。

屏幕内边距

现代手机利用整个屏幕,但通常包含缺口、切口和其他占用屏幕空间的元素。每个 Roblox 游戏还包括 顶栏控件,可快速访问主菜单、聊天排行榜 等。

移动设备显示 Roblox 顶栏按钮和设备切口。

为了确保玩家能够轻松访问所有 UI,而不受阻碍,Roblox 提供了 ScreenInsets 属性,该属性控制 ScreenGui 内容的 安全区域 内边距。

CoreUISafeInsets 的默认设置使所有子代 GuiObjects 保持在核心 UI 安全区域内,远离顶栏按钮和其他屏幕切口。如果 ScreenGui 包含交互式 UI 元素,建议使用此设置。

移动设备显示核心 UI 安全区域。

显示顺序

使用多个 ScreenGui 界面时,您可以通过它们的 DisplayOrder 属性按 Z 索引对它们进行分层。例如,要在一个 ScreenGui 上显示模态设置菜单,使其位于游戏主用户界面之上,请为模态的分配更高的 DisplayOrder,而不是底层界面的。

重置时生成

ResetOnSpawn 布尔属性决定 ScreenGui 是否在玩家角色重生时重置(删除自身并重新克隆到玩家的 PlayerGui)。

条件重置
ResetOnSpawntrue(默认)。
ScreenGuiStarterGui间接 后代;例如,它放置在 StarterGui 中的 Folder 内。
ResetOnSpawnfalse 并且 ScreenGuiStarterGui直接 后代。

访问玩家 UI

如前所述,将 ScreenGui 作为 StarterGui 的子项时,会在玩家加入游戏并且他们的角色首次生成时将其及其子 GuiObjects 克隆到玩家的 PlayerGui 容器中。

如果您需要在游戏运行时控制玩家的 UI 容器,例如显示/隐藏特定的 ScreenGui 或其任何子项,可以从 LocalScript 中按如下方式访问它:

LocalScript - 访问玩家的 UI
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local titleScreen = playerGui:WaitForChild("TitleScreen")
local settingsMenu = playerGui:WaitForChild("SettingsMenu")
titleScreen.Enabled = false -- 隐藏标题屏幕
settingsMenu.Enabled = true -- 显示设置菜单

禁用默认 UI

所有Roblox游戏包括多个默认启用的UI元素。如果您不需要这些元素,或者想用自己创建的元素替换它们,您可以在客户端脚本中使用 SetCoreGuiEnabled() 方法,并使用相关的 Enum.CoreGuiType 选项。

默认UI关联的枚举
动态更新的 Players 列表,通常用作 排行榜Enum.CoreGuiType.PlayerList
角色的 Health 条。当角色的 Humanoid 满血时不会出现。Enum.CoreGuiType.Health
角色的 Backpack,包含 游戏内工具。如果背包中没有 Tools,则不出现。Enum.CoreGuiType.Backpack
文本聊天 窗口。Enum.CoreGuiType.Chat
角色 表情 的弹出菜单。Enum.CoreGuiType.EmotesMenu
显示玩家视角或他们自己角色视图的窗口。除非玩家从Roblox菜单启用了 自视图,否则不会出现。Enum.CoreGuiType.SelfView
屏幕右侧的 截图 按钮。除非玩家从Roblox菜单启用了 捕捉,否则不会出现。Enum.CoreGuiType.Captures
头像切换器 允许用户更改他们的平台头像。Enum.CoreGuiType.AvatarSwitcher
每个Roblox游戏中的核心UI元素。
客户端脚本 - 禁用默认UI元素
local StarterGui = game:GetService("StarterGui")
-- 禁用默认血条和背包
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Health, false)
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)

此外,具有触摸功能的设备默认包含虚拟摇杆和跳跃按钮。如果需要,您可以通过在客户端脚本中将 GuiService.TouchControlsEnabled 设置为 false 来隐藏这些元素。

每个Roblox游戏中适用于触摸功能设备的UI元素。
客户端脚本 - 禁用触控控件
local GuiService = game:GetService("GuiService")
GuiService.TouchControlsEnabled = false
©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。