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

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

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

Enabled 属性可以通过 属性 窗口初始切换,或者您可以在游戏期间通过 访问 玩家 PlayerGui 将其设置为 true 或 false 以适用于所需的容器。
容器属性
以下属性允许您跨多个设备自定义 屏幕插入、在使用多个屏幕容器时的 显示顺序 等。
屏幕插入
现代手机利用整个屏幕,但通常包含缺口、切口和其他占用屏幕空间的元素。每个 Roblox 游戏还包括 顶栏控件,可快速访问主菜单、聊天、排行榜 等。

为了确保玩家能够轻松访问所有 UI,而不受阻碍,Roblox 提供了 ScreenInsets 属性,该属性控制 ScreenGui 内容的 安全区域 内边距。
CoreUISafeInsets 的默认设置使所有子代 GuiObjects 保持在核心 UI 安全区域内,远离顶栏按钮和其他屏幕切口。如果 ScreenGui 包含交互式 UI 元素,建议使用此设置。

显示顺序
使用多个 ScreenGui 界面时,您可以通过其 DisplayOrder 属性按 Z 轴索引对它们进行分层。例如,要在一个 ScreenGui 中显示模态设置菜单在体验的主用户界面前面,请给予模态一个比底层界面更高的 DisplayOrder。
重置时生成
ResetOnSpawn 布尔属性决定每当玩家的角色重生时,ScreenGui 是否重置(删除自身并在玩家的 PlayerGui 中重新克隆)。
| 条件 | 重置 |
|---|---|
| ResetOnSpawn 为 true(默认)。 | 是 |
| 该 ScreenGui 是 StarterGui 的间接子孙;例如,它被放置在位于 StarterGui 内的 Folder 中。 | 是 |
| ResetOnSpawn 为 false 并且该 ScreenGui 是 StarterGui 的直接子孙。 | 否 |
访问玩家 UI
如前所述,将 ScreenGui 作为子项添加到 StarterGui 会在玩家加入体验并首次生成角色时克隆它及其子 GuiObjects 到玩家的 PlayerGui 容器中。
如果您需要在游戏期间控制玩家的 UI 容器,例如隐藏/显示特定的 ScreenGui 或其任何子项,可以从 LocalScript 进行如下访问:
LocalScript - 访问玩家的 UIlocal Players = game:GetService("Players")local player = Players.LocalPlayerlocal playerGui = player.PlayerGuilocal 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 |

客户端脚本 - 禁用默认UI元素local StarterGui = game:GetService("StarterGui")-- 禁用默认血条和背包StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Health, false)StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)
此外,具有触摸功能的设备默认包含虚拟摇杆和跳跃按钮。如果需要,您可以通过在客户端脚本中将 GuiService.TouchControlsEnabled 设置为 false 来隐藏这些元素。

客户端脚本 - 禁用触控控件local GuiService = game:GetService("GuiService")GuiService.TouchControlsEnabled = false