位置和尺寸使用者介面對象

*此內容是使用 AI(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

ZIndex

ZIndex 屬性定義了層次順序,在該層次中 GuiObjects 渲染和重疊。如果您想創建新的渲染層,您必須將 ZIndex 屬性設置為每個物件的不同正整數或負整數值。

對於像 ScreenGui 這樣的用戶介面容器,預設 ZIndexBehavior 總是會渲染上述父輩的孩子,每個孩子的 ZIndex 用於決定它在其他孩子上渲染的順序。

要編輯對物件的 ZIndex ,請在 屬性窗口 中找到 ZIndex 並輸入新的整數值。

布局結構

布局結構讓您快速組織和顯示GuiObjects,例如轉換為水平或垂直的列表、相同尺寸的磚塊網格頁順序和更多。布局通常會覆蓋或影響其控制下的對象的 位置 / 大小

佈局說明
列表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

上下文基礎的使用者介面

在移動設備上,屏幕空間有限,因此您應該在激活遊玩期間顯示最重要的信息。例如,如果您的體驗包括開啟門和寶箱的特殊輸入動作,它不會有意義地始終在屏幕上顯示「開啟」按鈕。取而代之,使用 接近提示 或類似方法,只在字元接近門或箱子時才接受輸入。

只有當角色靠近門或箱子時顯示的自訂按鈕