Container ScreenGui giữ GuiObjects để hiển thị trên màn hình của người chơi, bao gồm khung, nhãn, nút bấm, và nhiều hơn nữa. Tất cả các đối tượng UI trên màn hình và mã đều được lưu trữ và thay đổi trên client.

Để hiển thị một ScreenGui và các GuiObjects con của nó cho mọi người chơi tham gia trò chơi, hãy đặt nó bên trong container StarterGui. Khi một người chơi tham gia trò chơi và nhân vật của họ lần đầu tiên xuất hiện, ScreenGui và nội dung của nó sẽ được sao chép vào container PlayerGui cho người chơi đó, nằm trong container Players.

Khi một trò chơi mở rộng về quy mô, bạn có thể cần nhiều giao diện màn hình như màn hình tiêu đề, menu cài đặt, giao diện cửa hàng, và nhiều hơn nữa. Trong những trường hợp như vậy, bạn có thể đặt nhiều container ScreenGui độc nhất bên trong StarterGui và bật/tắt thuộc tính Enabled của từng container tùy thuộc vào việc nó có nên hiển thị và hoạt động hay không (khi false, nội dung sẽ không được hiển thị, xử lý đầu vào của người dùng, hoặc cập nhật theo phản hồi thay đổi).

Thuộc tính Enabled có thể được bật/tắt ban đầu thông qua cửa sổ Thuộc tính và/hoặc bạn có thể thiết lập nó trong thời gian chơi từ một script phía client bằng cách truy cập vào PlayerGui của người chơi và thiết lập nó thành true hoặc false cho các container mong muốn.
Thuộc tính container
Các thuộc tính sau cho phép bạn tùy chỉnh các insets màn hình trên nhiều thiết bị, thứ tự hiển thị khi sử dụng nhiều container màn hình, và nhiều hơn nữa.
Insets màn hình
Các điện thoại hiện đại tận dụng toàn bộ màn hình nhưng thường bao gồm các lỗ khoét, phần cắt và các yếu tố khác chiếm không gian màn hình. Mỗi trò chơi Roblox cũng bao gồm các thao tác thanh điều khiển cho việc truy cập nhanh vào menu chính, trò chuyện, bảng xếp hạng, và nhiều hơn nữa.

Để đảm bảo người chơi có thể nhìn thấy và truy cập tất cả giao diện người dùng một cách dễ dàng và không bị cản trở, Roblox cung cấp thuộc tính ScreenInsets điều khiển các phần khoanh an toàn cho nội dung của một ScreenGui.
Mặc định của CoreUISafeInsets giữ tất cả các GuiObjects con bên trong vùng an toàn của giao diện core UI, không bị che khuất bởi các nút thanh điều khiển và các lỗ cắt của màn hình. Cài đặt này được khuyến nghị nếu ScreenGui chứa các yếu tố giao diện người dùng tương tác.

Thứ tự hiển thị
Khi sử dụng nhiều giao diện ScreenGui, bạn có thể xếp chồng chúng theo chỉ số Z thông qua thuộc tính DisplayOrder của chúng. Ví dụ, để hiển thị một menu cài đặt modal trên một ScreenGui ở phía trước giao diện người dùng chính của trò chơi trên một ScreenGui khác, hãy gán một DisplayOrder cao hơn cho modal so với giao diện bên dưới.
Đặt lại khi xuất hiện
Thuộc tính boolean ResetOnSpawn xác định xem ScreenGui có được đặt lại (xóa chính nó và sao chép lại vào PlayerGui của người chơi) mỗi khi nhân vật của người chơi tái sinh hay không.
| Điều kiện | Đặt lại |
|---|---|
| ResetOnSpawn là true (mặc định). | CÓ |
| ScreenGui là một hậu duệ gián tiếp của StarterGui; ví dụ, nó được đặt bên trong một Folder nằm trong StarterGui. | CÓ |
| ResetOnSpawn là false và ScreenGui là một hậu duệ trực tiếp của StarterGui. | KHÔNG |
Truy cập UI của người chơi
Như đã đề cập, việc gán một ScreenGui cho StarterGui sẽ sao chép nó và các GuiObjects con của nó vào container PlayerGui của người chơi khi họ tham gia trò chơi và nhân vật của họ lần đầu tiên xuất hiện.
Nếu bạn cần điều khiển container UI của người chơi trong thời gian chơi, chẳng hạn như để hiển thị/ẩn một ScreenGui cụ thể hoặc bất kỳ con nào của nó, hãy truy cập nó như sau từ một LocalScript:
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local titleScreen = playerGui:WaitForChild("TitleScreen")
local settingsMenu = playerGui:WaitForChild("SettingsMenu")
titleScreen.Enabled = false -- Ẩn màn hình tiêu đề
settingsMenu.Enabled = true -- Hiển thị menu cài đặtVô hiệu hóa UI mặc định
Tất cả các trò chơi Roblox bao gồm một số yếu tố UI được kích hoạt theo mặc định. Nếu bạn không cần bất kỳ yếu tố nào trong số này hoặc nếu bạn muốn thay thế chúng bằng những sáng tạo của riêng mình, bạn có thể sử dụng phương thức SetCoreGuiEnabled() trong một script phía khách hàng với tùy chọn Enum.CoreGuiType tương ứng.
| UI mặc định | enum liên quan |
|---|---|
| Danh sách Players được cập nhật động, thường được sử dụng như một bảng xếp hạng. | Enum.CoreGuiType.PlayerList |
| Thanh Health của nhân vật. Không xuất hiện nếu Humanoid của nhân vật đang ở trạng thái sức khỏe đầy đủ. | Enum.CoreGuiType.Health |
| Ba lô Backpack của nhân vật, chứa công cụ trong trò chơi. Không xuất hiện nếu không có Tools trong ba lô. | Enum.CoreGuiType.Backpack |
| Cửa sổ chat văn bản. | Enum.CoreGuiType.Chat |
| Menu popup của biểu cảm nhân vật. | Enum.CoreGuiType.EmotesMenu |
| Một cửa sổ hiển thị góc nhìn của người chơi về nhân vật của chính họ. Không xuất hiện trừ khi người chơi đã kích hoạt Góc Nhìn Bản Thân từ menu Roblox. | Enum.CoreGuiType.SelfView |
| Nút chụp ảnh màn hình nằm ở bên phải màn hình. Không xuất hiện trừ khi người chơi đã kích hoạt Chụp từ menu Roblox. | Enum.CoreGuiType.Captures |
| Công cụ Chuyển Avatar cho phép người dùng thay đổi avatar trên nền tảng của họ. | Enum.CoreGuiType.AvatarSwitcher |

local StarterGui = game:GetService("StarterGui")
-- Vô hiệu hóa thanh sức khỏe và ba lô mặc định
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Health, false)
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)Ngoài ra, các thiết bị có khả năng chạm bao gồm một cần điều khiển ảo và một nút nhảy theo mặc định. Nếu muốn, bạn có thể ẩn những yếu tố này bằng cách đặt GuiService.TouchControlsEnabled thành false trong một script phía khách hàng.

local GuiService = game:GetService("GuiService")
GuiService.TouchControlsEnabled = false