Menu Konteks Avatar (ACM) memudahkan pengguna untuk berinteraksi satu sama lain. Ketika ACM diaktifkan dalam permainan Anda, seorang pengguna dapat mendekati karakter pengguna lain dan mengkliknya untuk membuka menu kecil dengan beberapa opsi default. Pemain dapat mengirim permintaan pertemanan, memulai obrolan pribadi, melihat profil pengguna, atau melambaikan tangan.
Setelah mengaktifkan ACM dalam permainan Anda, Anda dapat menyesuaikan ACM dengan cara berikut:
- Secara programatik membuka dan menutup ACM untuk pengguna tertentu.
- Menambahkan opsi khusus dan menghapus opsi yang ada dari ACM.
- Menyesuaikan penampilan ACM untuk membuat antarmuka pengguna yang unik.
Mengaktifkan Menu Konteks Avatar
Menu Konteks Avatar harus diaktifkan menggunakan opsi StarterGui:SetCore() "AvatarContextMenuEnabled" dalam LocalScript. ACM paling baik digunakan dalam permainan di mana tidak ada perilaku yang telah ditentukan untuk mengklik pengguna lain.
Gunakan contoh kode berikut untuk mengaktifkan ACM dalam LocalScript:
-- Jalankan dalam LocalScript, idealnya di dalam "StarterPlayerScripts"local StarterGui = game:GetService("StarterGui")StarterGui:SetCore("AvatarContextMenuEnabled", true)
Jika Anda perlu mendeteksi apakah ACM diaktifkan, Anda dapat menggunakan kode berikut untuk mengembalikan boolean tentang status saat ini dari ACM:
---Mengembalikan boolean yang menunjukkan apakah ACM saat ini diaktifkan.StarterGui:GetCore(AvatarContextMenuEnabled)
Membuka dan menutup ACM
Setelah diaktifkan, Anda dapat membuka dan menutup ACM secara programatik menggunakan StarterGui.
Untuk membuka ACM secara programatik, gunakan kode berikut:
-- Gunakan StarterGui:SetCore di mana targetPlayer adalah objek Pemain yang validStarterGui:SetCore("AvatarContextMenuTarget", targetPlayer)
Untuk menutup ACM secara programatik, gunakan kode berikut:
StarterGui:SetCore("AvatarContextMenuTarget", nil)
Opsi menu
Anda dapat menambahkan dan menghapus tindakan melalui pemrograman. Secara default, menu memiliki opsi berikut:
| Opsi menu | Deskripsi |
|---|---|
| Teman | Mengirim permintaan pertemanan kepada pengguna yang dipilih. |
| Obrolan | Membuka percakapan pribadi dengan pengguna yang dipilih di obrolan dalam permainan. |
| View | Membuka jendela untuk memeriksa penampilan pengguna yang dipilih. |
| Wave | Memulai animasi melambaikan tangan kepada pengguna yang dipilih. |
Setelah ACM dibuka, pengguna dapat menggulir dan memilih pengguna lain di karusel pemilihan karakter. Karakter diurutkan berdasarkan jarak ke karakter yang dipilih. Menu hanya diperbarui saat dibuka dan daftar pengguna yang tersedia akan diulang saat menggulir.

Menambahkan opsi menu
Setelah diaktifkan, tindakan khusus untuk permainan dapat ditambahkan ke ACM. Misalnya, sebuah permainan mungkin memungkinkan permintaan perdagangan, opsi tambahkan ke pesta, atau interaksi khusus lainnya.
Contoh berikut menunjukkan cara menambahkan tindakan khusus ke Menu Konteks Avatar:
local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local player = Players.LocalPlayer
-- Menghubungkan fungsi ke "BindableEvent"
local bindableEvent = Instance.new("BindableEvent")
local function onCustomACMAction(targetPlayer)
-- Pada tahap ini, Anda bisa memanggil InvokeServer() pada RemoteFunction untuk memberi tahu server tentang pemilihan
print("ACM event dipilih oleh " .. player.Name .. " pada " .. targetPlayer.Name)
end
bindableEvent.Event:Connect(onCustomACMAction)
-- Tambahkan opsi ACM menggunakan SetCore() dengan "AddAvatarContextMenuOption"
local options = {"Aksi ACM Kustom", bindableEvent}
StarterGui:SetCore("AddAvatarContextMenuOption", options)
Menghapus opsi menu
Anda dapat menghapus opsi kustom dan default Tambah Teman, Obrolan, Lihat, dan Wave dari ACM dengan merujuk pada nama Aksi kustom atau enum default Enum.AvatarContextMenuOption.
Gunakan kode berikut untuk menghapus opsi menu default dan kustom:
-- Hapus opsi "Aksi ACM Kustom"StarterGui:SetCore("RemoveAvatarContextMenuOption", "Aksi ACM Kustom")-- Hapus opsi default "Teman" dengan merujuk pada Enum AvatarContextMenuOption.FriendStarterGui:SetCore("RemoveAvatarContextMenuOption", Enum.AvatarContextMenuOption.Friend)
Menyesuaikan penampilan menu
Untuk mengubah penampilan Menu Konteks Avatar, panggil StarterGui:SetCore() dengan opsi "AvatarContextMenuTheme", menyediakan tabel parameter dan nilai untuk menyesuaikan penampilan menu.
Antarmuka pengguna ACM mencakup bagian berikut:

A. Nama Tag: Nama pengguna dari karakter yang sedang berinteraksi.
B. Kerangka Tombol: Berisi semua tombol ACM.
C. Tombol: Tombol individu untuk tindakan ACM default atau kustom.
Parameter penampilan
Ini adalah parameter penyesuaian dengan ACM:
Latar Belakang
| BackgroundColor | Sebuah Color3 untuk latar belakang keseluruhan ACM (paling berguna saat tidak menggunakan gambar latar belakang). |
| BackgroundTransparency | Nilai transparansi (0–1) untuk latar belakang keseluruhan ACM (paling berguna saat tidak menggunakan gambar latar belakang). |
| BackgroundImage | ID aset yang valid dari gambar untuk latar belakang ACM. |
| BackgroundImageTransparency | Nilai transparansi (0–1) untuk gambar latar belakang. |
| BackgroundImageScaleType | Enum Enum.ScaleType untuk skala gambar latar belakang. |
| BackgroundImageSliceCenter | Datatype.Rect yang menunjukkan pusat gambar sembilan iris ketika BackgroundImageScaleType disetel ke Enum.ScaleType.Slice. |
Nama tag
| NameTagColor | Sebuah Color3 untuk bar yang menunjukkan pemain mana yang sedang berinteraksi. |
| NameUnderlineColor | Sebuah Color3 untuk garis tipis antara nama tag dan tombol tindakan. |
Kerangka tombol
| ButtonFrameColor | Sebuah Color3 untuk bagian (kerangka) yang berisi tombol-tombol tindakan. |
| ButtonFrameTransparency | Nilai transparansi (0–1) untuk bagian kerangka tombol. |
Tombol
| ButtonColor | Sebuah Color3 untuk latar belakang tombol tindakan ACM. |
| ButtonTransparency | Nilai transparansi (0–1) untuk warna latar belakang tombol tindakan. |
| ButtonHoverColor | Sebuah Color3 untuk keadaan "hover" dari tombol tindakan. |
| ButtonHoverTransparency | Nilai transparansi (0–1) untuk warna "hover" dari tombol tindakan. |
| ButtonUnderlineColor | Sebuah Color3 untuk garis tipis yang memisahkan setiap tombol tindakan. |
| ButtonImage | ID aset yang valid dari gambar untuk latar belakang tombol. |
| ButtonImageScaleType | Enum Enum.ScaleType untuk skala gambar tombol. |
| ButtonImageSliceCenter | Datatype.Rect yang menunjukkan pusat gambar sembilan iris ketika ButtonImageScaleType disetel ke Enum.ScaleType.Slice. |
Teks
| Font | Enum Enum.Font nilai untuk nama tag dan teks tombol. |
| TextColor | Sebuah Color3 untuk semua teks dalam ACM. |
| TextScale | Nilai float untuk mengubah ukuran teks default dari setiap elemen. |
Gambar berbagai
| LeaveMenuImage | ID aset gambar untuk tombol tutup ACM. |
| ScrollLeftImage | ID aset gambar untuk tombol "gulung kiri" karusel. |
| ScrollRightImage | ID aset yang valid dari gambar untuk tombol "gulung kanan" karusel. |
Karakter terpilih
| SelectedCharacterIndicator | Class.MeshPart yang mengapung di atas kepala karakter untuk menunjukkan bahwa mereka dipilih. |
Ukuran dan posisi
| Size | Sebuah UDim2 untuk ukuran keseluruhan ACM. |
| MinSize | Sebuah Vector2 yang menunjukkan ukuran minimum dari ACM. |
| MaxSize | Sebuah Vector2 yang menunjukkan ukuran maksimum dari ACM. |
| AspectRatio | Nilai float yang menunjukkan rasio lebar dan tinggi relatif dari ACM. |
| AnchorPoint | Class.GuiObject.AnchorPoint|AnchorPoint dari ACM. |
| OnScreenPosition | Sebuah UDim2 yang menunjukkan posisi di layar dari ACM (posisi di mana ia tween saat dibuka). |
| OffScreenPosition | Sebuah UDim2 yang menunjukkan posisi di luar layar dari ACM (posisi di mana ia tween dari/ke saat dibuka/ditutup). |
Contoh penyesuaian
Contoh kode berikut menyesuaikan tema ACM menggunakan beberapa parameter dasar:
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})
