位置和大小 UI 物件

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

除非 UI 物件受 佈局結構大小修飾符/約束 的控制,否則您對其 位置大小 擁有完整的控制權。您還可以設置 Z 索引 層次 以決定物件重疊的次序。

核心屬性

所有 GuiObjects 共享一組核心屬性來 定位調整大小定位點

位置

Position 屬性是一組 UDim2 協調,將物件定位於 XY 軸上。一個 UDim2 由每個軸的 ScaleOffset 兩者的值表示:

  • Scale 值代表物件在對應軸上容器大小的 百分比,加上任何 Offset 的值。
  • Offset 值代表在對應軸上將物件移動多少 像素,加上任何 Scale 的值。

要編輯所選 GuiObject 的位置,請在 屬性 窗口中單擊 位置 欄位,然後輸入新的 UDim2 協調集。

大小

Size 屬性是一組 UDim2 協調,將物件調整大小,沿著 XY 軸。UDim2 由每個軸的 ScaleOffset 值表示:

  • Scale — 代表在相應軸上容器大小的 百分比 的值,與任何 Offset 值相加。
  • Offset — 代表物件在相應軸上的 像素 大小的值,與任何 Scale 值相加。

要編輯所選 GuiObject 的大小,請在 屬性 窗口中單擊 大小 欄位,然後輸入新的 UDim2 協調集。

錨點

AnchorPoint 屬性定義了物件變更 位置大小原點。預設的 AnchorPoint 值為 (0, 0),將錨點放置在物件的左上角。

AnchorPoint 值是一個從 01比率,相對於物件的 大小,這意味著錨點值為 (0.5, 0.5) 的物件將錨點置於物件的中間(50%),在水平方向和垂直方向上均相對於此點進行變更其 位置大小

要查看和編輯所選 GuiObject 的錨點:

  1. 屬性 窗口中,單擊 AnchorPoint 欄位內。

  2. 輸入新的 Vector2 協調並按下 Enter

Z索引

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

對於 UI 容器如 ScreenGui,預設的 ZIndexBehavior 總是將子元素渲染在其父元素之上,而每個子元素的 ZIndex 用來決定其在渲染其他元素上的順序。

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

佈局結構

佈局結構讓您能快速組織和顯示 GuiObjects,例如分佈成水平或垂直的 列表、在其父容器內的均勻大小平板的 網格、一個 頁面序列 等。佈局通常會覆蓋或影響其控制下物件的 位置/大小

佈局描述
列表UIListLayout 在其父容器內將同級 GuiObjects 安置為水平行或垂直列。
網格UIGridLayout 在其父容器內將同級 GuiObjects 安置為均勻大小的網格單元。
表格UITableLayout 將同級 GuiObjects 及其子物件安置為表格格式。
頁面UIPageLayout 將其同級 GuiObjects 組織成獨特的頁面,您可以通過腳本進行過渡。

跨平台因素

Roblox 本質上是 跨平台 的,因為玩家可以在其手機或平板電腦上發現並加入體驗,然後在 PC 或遊戲主機上繼續他們的遊戲進程。您應該設計您的 Roblox 體驗,使其在所有您選擇支援的平台上都可以訪問和享受,而不是優化一個平台而忽略其他平台。

保留區域

在移動設備上,預設控件佔據螢幕左下角和右下角的一部分。當您設計一個體驗的 UI 時,請避免將重要資訊或虛擬按鈕放置在這些區域。

拇指區域

大多數移動玩家使用兩隻拇指— 一隻在虛擬拇指搖桿上,另一隻在跳躍按鈕上。根據設備的物理大小和玩家的手,從底角伸展太遠將變得不舒服或不可能,因此您應避免將常用按鈕放置在不易觸及的區域。


請記住,舒適的拇指區域在手機和平板之間是不同的,因為平板的螢幕更大。放置在螢幕上沿下邊緣 40% 的按鈕在手機上是可觸及的,但是在平板上幾乎無法觸及。

在手機和平板上,一個可靠的方法是 相對 定位自定義按鈕,靠近類似於預設跳躍按鈕等常用控件,將其放置在易於觸及的範圍內。

以下代碼放置在 StarterPlayerScripts 中的客戶端腳本內,獲取跳躍按鈕的位置,並在其左側 20 像素處創建一個佔位 按鈕

Client Script - Custom Button Near Jump Button

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("設備不支持觸控或 Studio 未模擬觸控設備!")
end

基於情境的 UI

在移動設備上,螢幕空間有限,因此您應該在積極遊玩時僅顯示最關鍵的信息。例如,如果您的體驗包括一個特殊的輸入動作來打開門和寶箱,則在螢幕上不合適持續顯示 "打開" 按鈕。相反,使用 接近提示 或類似方法,僅在角色接近門或寶箱時接受輸入。

當角色在門或寶箱附近時才顯示的自定義按鈕
©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。