Menu Ngữ Cảnh Avata (ACM) giúp người dùng dễ dàng tương tác với nhau hơn. Khi ACM được bật trong trò chơi của bạn, một người dùng có thể tiến lại gần nhân vật của một người dùng khác và nhấn vào họ để mở một menu nhỏ với một vài tùy chọn mặc định. Người chơi có thể gửi yêu cầu kết bạn, bắt đầu trò chuyện riêng tư, xem hồ sơ của người dùng, hoặc vẫy tay.
Sau khi bật ACM trong trò chơi của bạn, bạn có thể tùy chỉnh ACM theo những cách sau:
- Chương trình mở và đóng ACM cho các người dùng cụ thể.
- Tùy chỉnh giao diện ACM để tạo giao diện người dùng độc đáo.
Bật Menu Ngữ Cảnh Avata
Menu Ngữ Cảnh Avata phải được bật bằng cách sử dụng tùy chọn StarterGui:SetCore() "AvatarContextMenuEnabled" trong một LocalScript. ACM thường được sử dụng tốt nhất trong các trò chơi không có hành vi được định nghĩa trước cho việc nhấn vào người dùng khác.
Sử dụng mẫu mã sau để bật ACM trong một LocalScript:
-- Chạy trong LocalScript, tốt nhất là trong "StarterPlayerScripts"local StarterGui = game:GetService("StarterGui")StarterGui:SetCore("AvatarContextMenuEnabled", true)
Nếu bạn cần phát hiện xem ACM có được bật hay không, bạn có thể sử dụng mã sau để trả về một giá trị boolean về trạng thái hiện tại của ACM:
---Trả về một giá trị boolean cho biết liệu ACM có đang được bật hay không.StarterGui:GetCore(AvatarContextMenuEnabled)
Mở và đóng ACM
Sau khi được bật, bạn có thể mở và đóng ACM một cách chương trình bằng StarterGui.
Để mở ACM một cách chương trình, sử dụng mã sau:
-- Sử dụng StarterGui:SetCore với targetPlayer là một đối tượng Player hợp lệStarterGui:SetCore("AvatarContextMenuTarget", targetPlayer)
Để đóng ACM một cách chương trình, sử dụng mã sau:
StarterGui:SetCore("AvatarContextMenuTarget", nil)
Tùy chọn menu
Bạn có thể thêm và xóa các hành động thông qua mã hóa. Mặc định, menu có các tùy chọn sau:
| Tùy chọn menu | Mô tả |
|---|---|
| Kết bạn | Gửi yêu cầu kết bạn đến người dùng được chọn. |
| Trò chuyện | Mở một cuộc trò chuyện riêng tư với người dùng được chọn trong trò chuyện trong trò chơi. |
| Xem | Mở một cửa sổ để kiểm tra diện mạo của người dùng đã chọn. |
| Vẫy tay | Bắt đầu một hoạt ảnh vẫy tay đến người dùng đã chọn. |
Khi ACM đã mở, người dùng có thể cuộn và chọn các người dùng khác trên carousel lựa chọn nhân vật. Nhân vật được sắp xếp dựa trên khoảng cách đến nhân vật được chọn. Menu chỉ cập nhật khi được mở và danh sách người dùng khả dụng sẽ lặp lại khi cuộn.

Thêm tùy chọn menu
Khi được bật, các hành động cụ thể của trò chơi có thể được thêm vào ACM. Ví dụ, một trò chơi có thể cho phép yêu cầu giao dịch, thêm tùy chọn vào nhóm, hoặc các tương tác đặc biệt khác.
Ví dụ sau đây cho thấy cách thêm một hành động tùy chỉnh vào Menu Ngữ Cảnh Avata:
local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local player = Players.LocalPlayer
-- Kết nối một hàm với một "BindableEvent"
local bindableEvent = Instance.new("BindableEvent")
local function onCustomACMAction(targetPlayer)
-- Tại thời điểm này, bạn có thể gọi InvokeServer() trên một RemoteFunction để thông báo cho máy chủ về việc chọn lựa
print("Sự kiện ACM được chọn bởi " .. player.Name .. " trên " .. targetPlayer.Name)
end
bindableEvent.Event:Connect(onCustomACMAction)
-- Thêm tùy chọn ACM bằng cách sử dụng SetCore() với "AddAvatarContextMenuOption"
local options = {"Hành động ACM tùy chỉnh", bindableEvent}
StarterGui:SetCore("AddAvatarContextMenuOption", options)
Xóa tùy chọn menu
Bạn có thể xóa các tùy chọn tùy chỉnh và tùy chọn mặc định Kết bạn, Trò chuyện, Xem, và Vẫy tay khỏi ACM bằng cách tham chiếu đến tên Hành động tùy chỉnh hoặc enum Enum.AvatarContextMenuOption mặc định.
Sử dụng mã sau để xóa một tùy chọn menu mặc định và tùy chỉnh:
-- Xóa tùy chọn "Hành động ACM tùy chỉnh"StarterGui:SetCore("RemoveAvatarContextMenuOption", "Hành động ACM tùy chỉnh")-- Xóa tùy chọn mặc định "Kết bạn" bằng cách tham chiếu đến Enum AvatarContextMenuOption.FriendStarterGui:SetCore("RemoveAvatarContextMenuOption", Enum.AvatarContextMenuOption.Friend)
Tùy chỉnh giao diện menu
Để thay đổi giao diện của Menu Ngữ Cảnh Avata, gọi StarterGui:SetCore() với tùy chọn "AvatarContextMenuTheme", cung cấp một bảng các tham số và giá trị để điều chỉnh giao diện menu.
Giao diện người dùng ACM bao gồm các phần sau:

A. Nhãn tên: Tên của người dùng có nhân vật đang được tương tác.
B. Khung nút: Chứa tất cả các nút của ACM.
C. Nút: Nút riêng cho các hành động ACM mặc định hoặc tùy chỉnh.
Tham số giao diện
Đây là các tham số tùy chỉnh với ACM:
Nền
| Màu Nền | Một Color3 cho nền tổng thể của ACM (có ích nhất khi không sử dụng hình ảnh nền). |
| Độ Trong Suốt Nền | Giá trị độ trong suốt (0–1) cho nền tổng thể của ACM (có ích nhất khi không sử dụng hình ảnh nền). |
| Hình ảnh Nền | ID tài sản hợp lệ của một hình ảnh cho nền của ACM. |
| Độ Trong Suốt Hình ảnh Nền | Giá trị độ trong suốt (0–1) cho hình ảnh nền. |
| Loại Tỉ Lệ Hình ảnh Nền | Một enum Enum.ScaleType cho tỉ lệ hình ảnh nền. |
| Trung Tâm Cắt Hình ảnh Nền | Một Rect xác định trung tâm của một hình ảnh cắt chín khi BackgroundImageScaleType được thiết lập thành Enum.ScaleType.Slice. |
Nhãn tên
| Màu Nhãn Tên | Một Color3 cho thanh hiển thị người chơi nào đang được tương tác. |
| Màu Gạch Dưới Tên | Một Color3 cho đường kẻ mỏng giữa nhãn tên và các nút hành động. |
Khung nút
| Màu Khung Nút | Một Color3 cho phần (khung) chứa các nút hành động. |
| Độ Trong Suốt Khung Nút | Giá trị độ trong suốt (0–1) cho phần khung nút. |
Nút
| Màu Nút | Một Color3 cho nền của các nút hành động ACM. |
| Độ Trong Suốt Nút | Giá trị độ trong suốt (0–1) cho màu nền của các nút hành động. |
| Màu Nút Khi Di Chuột | Một Color3 cho trạng thái "di chuột" của các nút hành động. |
| Độ Trong Suốt Nút Khi Di Chuột | Giá trị độ trong suốt (0–1) cho màu "di chuột" của các nút hành động. |
| Màu Gạch Dưới Nút | Một Color3 cho đường kẻ mỏng tách biệt mỗi nút hành động. |
| Hình ảnh Nút | ID tài sản hợp lệ của một hình ảnh cho nền của các nút. |
| Loại Tỉ Lệ Hình ảnh Nút | Một enum Enum.ScaleType cho tỉ lệ hình ảnh nút. |
| Trung Tâm Cắt Hình ảnh Nút | Một Rect xác định trung tâm của một hình ảnh cắt chín khi ButtonImageScaleType được thiết lập thành Enum.ScaleType.Slice. |
Văn bản
| Font | Một giá trị enum Enum.Font cho nhãn tên và văn bản nút. |
| Màu Văn Bản | Một Color3 cho tất cả văn bản trong ACM. |
| Tỉ Lệ Văn Bản | Một giá trị float để thay đổi kích thước văn bản mặc định của mỗi phần tử. |
Hình ảnh khác nhau
| Hình ảnh Đóng Menu | ID tài sản của một hình ảnh cho nút đóng ACM. |
| Hình ảnh Cuộn Trái | ID tài sản của một hình ảnh cho nút "cuộn trái" trên carousel. |
| Hình ảnh Cuộn Phải | ID tài sản hợp lệ của một hình ảnh cho nút "cuộn phải" trên carousel. |
Nhân vật được chọn
| Chỉ Báo Nhân Vật Được Chọn | Đối tượng MeshPart nổi trên đầu của một nhân vật để chỉ ra rằng họ đã được chọn. |
Kích thước và vị trí
| Kích thước | Một UDim2 cho kích thước tổng thể của ACM. |
| Kích thước Tối Thiểu | Một Vector2 xác định kích thước tối thiểu của ACM. |
| Kích thước Tối Đa | Một Vector2 xác định kích thước tối đa của ACM. |
| Tỉ Lệ Khía | Một giá trị float xác định tỷ lệ tương đối giữa chiều rộng và chiều cao của ACM. |
| Điểm Neo | Điểm AnchorPoint của ACM. |
| Vị Trí Trên Màn Hình | Một UDim2 xác định vị trí trên màn hình của ACM (vị trí mà nó chuyển động đến khi được mở). |
| Vị Trí Ngoài Màn Hình | Một UDim2 xác định vị trí ngoài màn hình của ACM (vị trí mà nó chuyển động từ/đến khi được mở/đóng). |
Ví dụ tùy chỉnh
Mẫu mã sau đây tùy chỉnh chủ đề ACM bằng một số tham số cơ bản:
local StarterGui = game:GetService("StarterGui")StarterGui:SetCore("AvatarContextMenuTheme", {BackgroundImage = "",BackgroundTransparency = 0.5,BackgroundColor = Color3.fromRGB(111, 145, 242),NameTagColor = Color3.fromRGB(0, 0, 200),NameUnderlineColor = Color3.fromRGB(213, 233, 255),ButtonFrameColor = Color3.fromRGB(15, 24, 65),ButtonFrameTransparency = 0.2,ButtonUnderlineColor = Color3.fromRGB(213, 233, 255),Font = Enum.Font.SciFi})
