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 中按如下方式访问它:
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 |

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