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 上顯示模態設置菜單,並將其放在另一個 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