除非控制 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 的錨定點:
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.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")if UserInputService.TouchEnabled then-- 等待跳躍按鈕載入完畢while not (playerGui:FindFirstChild("JumpButton", true) and playerGui:FindFirstChild("JumpButton", true).IsLoaded) dotask.wait()endlocal 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.Parentelsewarn("Device is not touch-enabled or Studio is not emulating a touch-enabled device!")end
基於 context 的 UI
移動設備的螢幕空間有限,所以您應該僅顯示最重要的信息,在進行活躍遊玩期間。例如,如果您的體驗包含一個特殊的輸入行動來打開門和寶箱,就不合理將螢幕上的開啟按鈕顯示為常態。相反,您應該使用靠近提示或類似方法來接受輸入,只有