位置和尺寸 UI 对象

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

除非用户界面对象受到 布局结构尺寸调整器/约束 的控制,否则您完全控制其 位置尺寸。您还可以设置 Z‑index 重叠顺序 对象重叠的排序。

核心属性

所有 GuiObjects 共享一个核心集的属性到 位置 , 尺寸 , 它们在屏幕上或体验中的容器内。

位置

Position 属性是一个UDim2坐标集,位置在对象沿着 XY 轴。A UDim2 由每个轴的 ScaleOffset 值代表:

  • Scale 值代表相应轴上容器的尺寸的 百分比 ,加上任何 Offset 值。
  • Offset 值表示在相应轴上移动对象所需的 像素 数,加上任何 Scale 值。

要编辑选定 GuiObject 的位置,请单击 位置 字段在 属性 窗口,然后输入新的 UDim2 坐标设置。

大小

Size 属性是一个UDim2坐标集,可以沿 XY 轴缩放对象。A UDim2 由每个轴的 ScaleOffset 值代表:

  • 缩放 — 以相应轴为单位的容器大小的 百分比 值,可以加到任何 抵消 值。
  • 抵消 — 代表对应轴上对象 像素 尺寸的值,可加到任何 缩放值

要编辑选定的 GuiObject 的大小,请单击 大小 字段在 属性 窗口,然后输入新的 UDim2 坐标设置。

锚点

属性定义了从哪里对象改变位置和大小的起始点。默认值 值是 ,将锚放在对象的左上角。

值是对对象的 比例 从 到 的,相对于对象的 尺寸 ,意味着具有 值的对象将锚点放在中间(50%)通过对象的横向和垂直方向移动和缩放,任何对其位置或尺寸的更改都将从这一点向外移动和缩放。

要查看并编辑选定 GuiObject 的锚点:

  1. 属性 窗口中,单击 锚点 字段内。

  2. 输入新的 Vector2 坐标并按 Enter

Z索引

ZIndex 属性定义了层次顺序,在 котором GuiObjects 渲染和重叠。如果您想创建新的渲染层,您必须将 ZIndex 属性设置为每个对象的不同正整数或负整数值。

对于像 ScreenGui 这样的 UI 容器,默认 ZIndexBehavior 总是渲染上级的孩子,每个孩子的 ZIndex 用于决定它在其他孩子上渲染的顺序。

要编辑对象的 ZIndex ,请在 属性窗口 中找到 ZIndex 并输入新的整数值。

布局结构

布局结构可以快速组织和显示,例如将其转换为横向或纵向列表、相同尺寸的网格、页面顺序和更多。布局通常会覆盖或影响控制下的对象的 位置 / 大小

布局描述
列表UIListLayout 位置兄弟 GuiObjects 到父容器内的横向行或垂直列中。
网格UIGridLayout 位置兄弟 GuiObjects 在父容器内的相同尺寸的单元网格内。
UITableLayout 位置兄弟 GuiObjects 和他们的孩子转换为表格格式。
UIPageLayout 将其兄弟 GuiObjects 组织成独特的页面,可以通过脚本转换到。

跨平台因素

Roblox 本质上具有 跨平台 特性,因为玩家可以在 PC 或游戏机上发现并加入体验,然后稍后拿起手机并继续他们离关闭的地方。你应该设计你的 Roblox 体验在你选择支协助的所有 平台 上都能访问和愉快,而不是优化一个平台并忽略其他平台。

保留区

在移动设备上,默认控件占用屏幕左下角和右下角的一部分。当你设计体验的用户界面时,避免在这些区域放置重要信息或虚拟按钮。

拇指区域

大多数移动玩家使用两个拇指——一个在虚拟拇钮上,另一个在跳跃按钮上。根据设备的物理尺寸和玩家的手,距离底角过远会导致不舒服或不可能,因此您应该避免将常用按钮放置在易于达到的区域之外。


请记住,舒适的拇指区域与手机和平板电脑之间存在差异,因为平板电脑拥有更大的屏幕。放置在屏幕顶部 40% 以下的按钮可在手机上访问,但几乎无法在平板电脑上访问。

在手机和平板电脑上的可靠方法是 相对 定位自定义按钮靠近常用控件,如默认跳跃按钮,放置在易于达到的位置。

以下验证码,放置在客户端脚本内的 StarterPlayerScripts 中,获取跳跃按钮的位置并创建一个占位符 按钮 20像素到其左侧。

客户端脚本 - 跳跃按钮附近的自定义按钮

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
if UserInputService.TouchEnabled then
-- 等待跳跃按钮完全加载
while not (playerGui:FindFirstChild("JumpButton", true) and playerGui:FindFirstChild("JumpButton", true).IsLoaded) do
task.wait()
end
local jumpButton = playerGui:FindFirstChild("JumpButton", true)
-- 放置新的自定义按钮到跳跃按钮左侧
local customButton = Instance.new("ImageButton")
customButton.AnchorPoint = Vector2.new(1, 1)
customButton.Size = UDim2.fromOffset(jumpButton.Size.X.Offset * 0.8, jumpButton.Size.Y.Offset * 0.8)
customButton.Position = jumpButton.Position + UDim2.fromOffset(-20, jumpButton.Size.Y.Offset)
customButton.Parent = jumpButton.Parent
else
warn("Device is not touch-enabled or Studio is not emulating a touch-enabled device!")
end

上下文基础的用户界面

屏幕空间在移动设备上受限,因此您应该在激活游戏期间显示最重要的信息。例如,如果你的体验包括打开门和宝箱的特殊输入操作,那么始终显示屏幕上一个“打开”按钮就没有意义了。相反,使用 靠近提示 或类似方法,只在字符接近门或箱子时才接受输入。

只有当角色靠近门或箱子时显示的自定义按钮