正確位置和大小控制對象

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

除非控制 UI 對象 或 大小變更器 之外,您可以完全控制它們的 位置 和 2>大小2> 。您也可以設置 Z 5>索引5> 以便對對象交叉。

核心屬性

所有 GuiObjects 共享核心的屬性集到 位置大小、1>錨定1> 和 4>層級4> 它們在畫面或體驗容器中。

位置

Class.GuiObject.Position|Position 屬性是一個 UDim2 坐標集,以 X 和 1>Y1> 軸為基軸,將對象沿 4>X4> 和 <

  • 鱸量 — 值表示容器尺寸沿相應軸線上的 百分比 。 添加任何 偏移 值。
  • 偏移值 — 代表要在對應軸上移動對象的 像素 數量的值。 添加任何 縮放值 值。

要編輯選取的 GuiObject 的位置,請在 屬性 窗口中單擊 位置 字段,然後輸入新的 1> Datatype.UDim21> 坐標設定。

大小

Class.GuiObject.Size|Size 屬性是一個 UDim2 坐標集,尺寸對象沿 X 和 1>Y1> 軸。4>Datatype.UDim24> 由

  • 鱸量 — 值表示容器尺寸的百分比,可隨任何 偏移值 添加。
  • 偏移值 — 代表對物件 像素 尺寸沿相應軸線的值,可添加到任何 縮放值 值。

要編輯選取的 GuiObject 的大小,請在 屬性 窗口中單擊 大小 字段,然後輸入新的 1> Datatype.UDim21> 坐標設定。

錨定點

Class.GuiObject.AnchorPoint|AnchorPoint 屬性定義了從對象變更位置 位置大小的原始點。預設值1>Class.GuiObject.AnchorPoint1>為4> 7>Class.GuiObject.AnchorPoint7> ,其中位置在對象

AnchorPoint 值是從 0

要檢視並編輯選取的 GuiObject 的錨定點:

  1. 屬性 窗口中,單擊 錨定點 字段。

  2. 輸入新的 Vector2 坐標,然後按下 輸入

Z 指數

Class.GuiObject.ZIndex|ZIndex 屬性定義了 GuiObjects 渲染和交織的層級。如果您想要創建新渲染層,您必須將 ZIndex 屬性設置為正確的或負確的整數值,以便每個對物件。

對於像 ScreenGui 這樣的 UI 容器,預設 ZIndexBehavior 總是會在其父親上方顯示兒女,每個兒女的 ZIndex 是用來決定它在其他人上面顯示的順序。

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

結構設計

頁面結構讓您快速組織並顯示GuiObjects,例如在水平或垂直列表中,或在同等大小的瓷磚網格網格,或在頁面1>順序1>。頁面結構通常會覆蓋或影響4>位置4> / 7>大

結構說明
清單UIListLayout 位置將姊妹位置 GuiObjects 變更為水平行或垂直柱位在其父容器中。
網格UIGridLayout 位置在同一大小內的單一樣位 GuiObjects 在網格中。
桌子UITableLayout 位置的兄弟姊妹 GuiObjects 和他們的子孫以桌子格式。
頁面UIPageLayout 組織其兄弟 GuiObjects 成為您可以通過腳本轉換的獨特頁面。

平台間因素

Roblox 是穿透平台的 平台交叉 ,因為玩家可以在 PC 或控制台上發現並加入體驗,然後稍後從電話中撿起並繼續在他們離關閉的地方。你應該設計你的 Roblox 體驗在所選擇的所有平台上都能獲得並且可以享協助的,而不是為一個平台而優化,並且忽略其他平台。

保留區域

在移動設備上,預設控制占用屏幕左下角和右下角的一部分。當你設計體驗的 UI 時,請避免在這些區域放置重要信息或虛擬按鈕。

拇指區域

大多數玩家使用兩個手勢:一個在虛擬螢幕上,一個在跳躍按鈕上。 依據裝置的物理尺寸和玩家的手,從設備底部到達太遠會變得不舒服或不可能,因此您應該避免放置在容易取得按鈕外的區域。


記住,握鞋的拇指區域在電話和平板電腦之間不同,因為平板電腦的螢幕尺寸更大。放置在螢幕上方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

基於 context 的 UI

移動設備的螢幕空間有限,所以您應該僅顯示最重要的信息,在進行活躍遊玩期間。例如,如果您的體驗包含一個特殊的輸入行動來打開門和寶箱,就不合理將螢幕上的開啟按鈕顯示為常態。相反,您應該使用靠近提示或類似方法來接受輸入,只有

角色靠近門或寶箱時顯示的自訂按鈕