Chyba że obiekty UI znajdują się pod kontrolą struktur układu lub modifikatora/ograniczenia rozmiaru, masz pełną kontrolę nad ich pozycją i rozmiarem. Możesz również ustawić porządek warstwowania Z‑index, według którego obiekty będą się na sobie nakładać.
Właściwości podstawowe
Wszystkie GuiObjects dzielą się zestawem podstawowych właściwości do pozycjonowania, zmiany rozmiaru, kotwicy i warstwy w kontenerze na ekranie lub w doświadczeniu.
Pozycja
Właściwość Position to zestaw współrzędnych UDim2, który pozycjonuje obiekt wzdłuż osi X i Y. UDim2 jest reprezentowany przez wartości Scale i Offset dla każdej osi:

Aby edytować pozycję wybranego GuiObject, kliknij pole Position w oknie Properties i wprowadź nowy zestaw współrzędnych UDim2.


Rozmiar
Właściwość Size to zestaw współrzędnych UDim2, który zmienia rozmiar obiektu wzdłuż osi X i Y. UDim2 jest reprezentowany przez wartości Scale i Offset dla każdej osi:
- Skala — Wartości, które reprezentują procent rozmiaru kontenera wzdłuż odpowiadającej osi, dodawane do wszelkich wartości Offset.
- Offset — Wartości, które reprezentują pikselowy rozmiar obiektu wzdłuż odpowiadającej osi, dodawane do wszelkich wartości Skali.
Aby edytować rozmiar wybranego GuiObject, kliknij pole Size w oknie Properties i wprowadź nowy zestaw współrzędnych UDim2.


AnchorPoint
Właściwość AnchorPoint definiuje punkt początkowy, z którego obiekt zmienia pozycję i rozmiar. Domyślne wartości AnchorPoint to (0, 0), co umieszcza kotwicę w lewym górnym rogu obiektu.
Wartości AnchorPoint to ułamek od 0 do 1, w relacji do rozmiaru obiektu, co oznacza, że obiekt z wartościami AnchorPoint wynoszącymi (0.5, 0.5) umieszcza punkt kotwiczenia w połowie (50%) w obrębie obiektu zarówno poziomo, jak i pionowo, a wszelkie zmiany w jego pozycji lub rozmiarze będą się przemieszczać i skalować z tego punktu na zewnątrz.


Aby wyświetlić i edytować punkt kotwiczenia wybranego GuiObject:
W oknie Properties kliknij wewnątrz pola AnchorPoint.

Wprowadź nowy zestaw współrzędnych Vector2 i naciśnij Enter.
ZIndex
Właściwość ZIndex definiuje kolejność warstwy, w jakiej GuiObjects renderują i nakładają się na siebie. Jeśli chcesz stworzyć nowe warstwy renderowania, musisz ustawić właściwość ZIndex na różne dodatnie lub ujemne wartości całkowite dla każdego obiektu.
Dla kontenerów UI, takich jak ScreenGui, domyślne zachowanie ZIndexBehavior zawsze renderuje dzieci powyżej ich rodziców, a ZIndex każdego dziecka jest używane do decyzji, w jakiej kolejności zostanie ono wyrenderowane na innych.
Aby edytować ZIndex obiektu, zlokalizuj ZIndex w oknie Properties i wprowadź nową wartość całkowitą.

Struktury układu
Struktury układu pozwalają szybko organizować i wyświetlać GuiObjects, na przykład w poziomej lub pionowej liście, siatce równo wymiarowanych kafelków, w sekwencji stron i więcej. Układy zazwyczaj nadpisują lub wpływają na pozycję/rozmiar obiektów pod ich kontrolą.
| Układ | Opis |
|---|---|
| Lista | UIListLayout pozycjonuje rodzeństwo GuiObjects w poziomych wierszach lub pionowych kolumnach w obrębie ich rodzica. |
| Siatka | UIGridLayout pozycjonuje rodzeństwo GuiObjects w siatce jednorodnych komórek o tym samym rozmiarze w obrębie ich rodzica. |
| Tabela | UITableLayout pozycjonuje rodzeństwo GuiObjects oraz ich dzieci w formacie tabeli. |
| Strona | UIPageLayout organizuje rodzeństwo GuiObjects w unikalne strony, do których można przechodzić za pomocą skryptów. |
Czynniki międzyplatformowe
Roblox jest z natury wieloplatformowy, ponieważ gracze mogą odkrywać i dołączać do doświadczeń na swoim telefonie lub tablecie, a następnie kontynuować, gdzie skończyli, na swoim PC lub konsoli. Powinieneś projektować swoje doświadczenia na Roblox, aby były dostępne i przyjemne na wszystkich platformach, które zdecydujesz się wspierać, zamiast optymalizować pod jedną platformę i zaniedbywać inne.
Zastrzeżone strefy
Na urządzeniach mobilnych domyślne sterowniki zajmują część lewego dolnego i prawego dolnego rogu ekranu. Kiedy projektujesz UI doświadczenia, unikaj umieszczania ważnych informacji lub wirtualnych przycisków w tych strefach.

Strefy kciuka
Większość graczy mobilnych używa dwóch kciuków — jednego na wirtualnym joysticku i jednego na przycisku skoku. W zależności od fizycznego rozmiaru urządzenia i rąk gracza, sięgnięcie zbyt daleko od dolnych rogów staje się niewygodne lub niemożliwe, więc powinieneś unikać umieszczania często używanych przycisków poza łatwo dostępnymi strefami.


Pamiętaj, że komfortowe strefy kciuka różnią się między telefonami a tabletami, ponieważ tablety mają większy ekran. Przycisk umieszczony 40% poniżej górnej krawędzi ekranu jest osiągalny na telefonie, ale niemal nieosiągalny na tablecie.


Niezawodnym podejściem zarówno na telefonach, jak i tabletach jest względne pozycjonowanie niestandardowych przycisków w pobliżu często używanych sterowników, takich jak domyślny przycisk skoku, umieszczając je w łatwo dostępnej odległości.

Poniższy kod, umieszczony w skrypcie klienckim w StarterPlayerScripts, pobiera pozycję przycisku skoku i tworzy miejsce na przycisk 20 pikseli na lewo od niego.
Skrypt kliencki - Niestandardowy przycisk w pobliżu przycisku skokulocal Players = game:GetService("Players")local UserInputService = game:GetService("UserInputService")local player = Players.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")if UserInputService.TouchEnabled then-- Czekaj na pełne załadowanie przycisku skokuwhile not (playerGui:FindFirstChild("JumpButton", true) and playerGui:FindFirstChild("JumpButton", true).IsLoaded) dotask.wait()endlocal jumpButton = playerGui:FindFirstChild("JumpButton", true)-- Umieść nowy niestandardowy przycisk na lewo od przycisku skokulocal 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("Urządzenie nie jest obsługiwane dotykowo lub Studio nie emuluje urządzenia obsługującego dotyk!")end
UI oparte na kontekście
Przestrzeń ekranu jest ograniczona na urządzeniach mobilnych, więc powinieneś pokazywać tylko najważniejsze informacje podczas aktywnej rozgrywki. Na przykład, jeśli twoje doświadczenie zawiera specjalną akcję wejścia do otwierania drzwi i skarbów, nie ma sensu ciągłe wyświetlanie przycisku "otwórz" na ekranie. Zamiast tego użyj zaproszenia do interakcji lub podobnej metody, aby akceptować wejścia tylko wtedy, gdy postać zbliża się do drzwi lub skrzyni.
