位置和大小 UI 物件

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

除非 UI 物件受到 佈局結構大小修飾符/約束 的控制,否則您可以完全控制它們的 位置大小。您還可以設置 Z‑index 層級 物件重疊的順序。

核心屬性

所有 GuiObjects 共享一組核心屬性來 定位調整大小錨點層級 它們在螢幕或遊戲容器內。

位置

Position 屬性是一組 UDim2 坐標集,用於沿著 XY 軸定位物件。UDim2 由每個軸的 ScaleOffset 值表示:

  • Scale 值表示容器大小沿相應軸的 百分比,加上任何 Offset 值。
  • Offset 值表示在相應軸上移動物件的 像素 數量,加上任何 Scale 值。

要編輯所選 GuiObject 的位置,請單擊 屬性 窗口中的 位置 欄位,並輸入新的 UDim2 坐標集。

大小

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

  • 比例 — 表示容器大小沿相應軸的 百分比 的值,加上任何 偏移 值。
  • 偏移 — 表示物件沿相應軸的 像素 大小的值,加上任何 比例 值。

要編輯所選 GuiObject 的大小,請單擊 屬性 窗口中的 大小 欄位,並輸入新的 UDim2 坐標集。

錨點

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

AnchorPoint 值是從 01分數,相對於物件的 大小,這意味著具有 AnchorPoint(0.5, 0.5) 的物件將錨點放置在物件的水平和垂直中間(50%),對其 位置大小 的任何更改都將從此點向外移動和縮放。

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

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

  2. 輸入新的 Vector2 坐標並按 Enter

ZIndex

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

對於像 ScreenGui 這樣的 UI 容器,預設的 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 是我們在美國及其他國家地區的部分註冊與未註冊商標。