屏幕上的 UI 容器

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

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

Example ScreenGui with various GuiObject children, including a Frame, TextLabel, TextBox, and ImageButton.

要将 ScreenGui 和其子 GuiObjects 显示给每个加入体验的玩家,将其放置在 StarterGui 容器内。当玩家加入体验时,其角色首先生成时,ScreenGui和其内容将复制到位于PlayerGui容器内的那个玩家的容器中,该容器位于Players容器内。

Diagram of how a ScreenGui clones from StarterGui to a player's PlayerGui

随着体验的范围扩大,您可能需要多个屏幕界面,例如标题屏幕、设置菜单、商店界面等。在这些情况下,您可以将多个独特的 容器放置在 内,根据是否应该显示和激活切换每个容器的 属性,而内容不会渲染、处理用户输入或更新以响应更改)。

Explorer hierarchy showing multiple ScreenGui containers, one enabled and the others disabled, in order to control which are visible at a given time.

Enabled可以初始通过属性窗口切换,或者你可以在游戏时间通过访问玩家的PlayerGui并将其设置为truefalse为所需的容器。

容器属性

以下属性可让您在多个设备上自定义屏幕插入,在使用多个屏幕容器时显示顺序,以及更多。

屏幕插入

现代手机利用整个屏幕,但通常包括占用屏幕空间的钮钮、切割和其他元素。每个 Roblox 体验还包括快速访问主菜单、聊天、排行榜等顶部栏控件以及更多内容。

Mobile device showing Roblox top bar buttons and device cutout.

为了确保玩家可以轻松看到和访问所有界面,Roblox 提供了 ScreenInsets 属性,该属性控制 安全区 插入的内容,用于 ScreenGui 的内容。

默认值 CoreUISafeInsets 将所有子孙 GuiObjects 放在核心 UI 安全区域内,清除顶部栏按钮和其他屏幕切割部分。如果 ScreenGui 包含互动用户界面元素,建议使用此设置。

Mobile device showing the core UI safe area.

显示顺序

当使用多个ScreenGui接口时,您可以通过Z‑index将它们堆叠在其DisplayOrder属性上。例如,要在另一个 上显示一个模态设置菜单在体验主用户界面前,分配更高的 给模态比底层接口。

在生成时重生点

布尔属性决定是否每次重生时玩家角色都会重置 (删除自己并重新克隆到玩家的 )。

条件重置
ResetOnSpawntrue (默认)。
yes
是 间接 子孙的 ;例如,它放置在 位于 内的 中。
yes
ResetOnSpawnfalse ScreenGui直接 后裔的 StarterGui
no

访问玩家界面

如已注意到的那样,将 克隆到 一个玩家的 容器中,当他们加入体验时,其父亲和孩子 将被克隆到玩家的 容器中,当他们的角色首次生成时。

如果需要在游戏时控制玩家的 UI 容器,例如显示或隐藏特定的 ScreenGui 或其子元素,从 LocalScript 访问如下:

本地脚本 - 访问玩家's 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 -- Show settings menu

禁用默认 UI

所有 Roblox 体验都包含默认启用的几个用户界面元素。如果你不需要任何这些元素或者想用自己的创作替换它们,你可以在客户端脚本中使用 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
Core UI elements in every Roblox experience.
客户端脚本 - 禁用默认 UI 元素

local StarterGui = game:GetService("StarterGui")
-- 禁用默认生命条和背包
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Health, false)
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)

此外,具有触摸功能的设备默认包括虚拟拇指和跳跃按钮。如果需要,你可以在客户端脚本中设置 GuiService.TouchControlsEnabledfalse 来隐藏这些元素。

UI elements for touch-capable devices in every Roblox experience
客户端脚本 - 禁用触摸控件

local GuiService = game:GetService("GuiService")
GuiService.TouchControlsEnabled = false