Il Menu di contesto dell'avatar (ACM) rende più facile per gli utenti interagire tra di loro. Quando l'ACM è attivato nel tuo gioco, un utente può avvicinarsi al personaggio di un altro utente e cliccarci sopra per aprire un piccolo menu con diverse opzioni predefinite. Il giocatore può inviare una richiesta di amicizia, iniziare una chat privata, visualizzare il profilo dell'utente o salutare.
Dopo aver attivato l'ACM nel tuo gioco, puoi personalizzare l'ACM nei seguenti modi:
- Programmaticamente aprire e chiudere l'ACM per utenti specifici.
- Aggiungere opzioni personalizzate e rimuovere opzioni esistenti dall'ACM.
- Personalizzare l'aspetto dell'ACM per creare un'interfaccia utente unica.
Abilitare il menu di contesto dell'avatar
Il menu di contesto dell'avatar deve essere abilitato utilizzando l'opzione StarterGui:SetCore() "AvatarContextMenuEnabled" in un LocalScript. L'ACM è meglio utilizzato in giochi dove non è prevista una funzione predefinita per cliccare su altri utenti.
Utilizza il seguente esempio di codice per abilitare l'ACM in un LocalScript:
-- Esegui in un LocalScript, idealmente all'interno di "StarterPlayerScripts"local StarterGui = game:GetService("StarterGui")StarterGui:SetCore("AvatarContextMenuEnabled", true)
Se hai bisogno di rilevare se l'ACM è abilitato, puoi utilizzare il seguente codice per restituire un booleano sullo stato attuale dell'ACM:
---Restituisce un booleano che indica se l'ACM è attualmente abilitato.StarterGui:GetCore(AvatarContextMenuEnabled)
Aprire e chiudere l'ACM
Una volta abilitato, puoi aprire e chiudere l'ACM programmaticamente con StarterGui.
Per aprire programmaticamente l'ACM, utilizza il seguente codice:
-- Usa StarterGui:SetCore dove targetPlayer è un oggetto Player validoStarterGui:SetCore("AvatarContextMenuTarget", targetPlayer)
Per chiudere programmaticamente l'ACM, utilizza il seguente codice:
StarterGui:SetCore("AvatarContextMenuTarget", nil)
Opzioni del menu
Puoi aggiungere e rimuovere azioni tramite scripting. Per impostazione predefinita, il menu ha le seguenti opzioni:
| Opzione del menu | Descrizione |
|---|---|
| Amico | Invia una richiesta di amicizia all'utente selezionato. |
| Chat | Apri una conversazione privata con l'utente selezionato nella chat di gioco. |
| Visualizza | Apri una finestra per ispezionare l'aspetto dell'utente selezionato. |
| Saluta | Inizia un'animazione di saluto verso l'utente selezionato. |
Una volta aperto l'ACM, l'utente può scorrere e selezionare altri utenti nel carosello di selezione dei personaggi. I personaggi sono ordinati in base alla distanza dal personaggio selezionato. Il menu si aggiorna solo quando aperto e l'elenco degli utenti disponibili si ripeterà durante lo scorrimento.

Aggiungere opzioni al menu
Una volta abilitato, azioni specifiche del gioco possono essere aggiunte all'ACM. Ad esempio, un gioco potrebbe consentire richieste di scambio, opzioni per aggiungere a un gruppo, o altre interazioni speciali.
Il seguente esempio mostra come aggiungere un'azione personalizzata al menu di contesto dell'avatar:
local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local player = Players.LocalPlayer
-- Collega una funzione a un "BindableEvent"
local bindableEvent = Instance.new("BindableEvent")
local function onCustomACMAction(targetPlayer)
-- A questo punto, potresti chiamare InvokeServer() su un RemoteFunction per avvisare il server della selezione
print("Evento ACM selezionato da " .. player.Name .. " su " .. targetPlayer.Name)
end
bindableEvent.Event:Connect(onCustomACMAction)
-- Aggiungi l'opzione ACM utilizzando SetCore() con "AddAvatarContextMenuOption"
local options = {"Azione ACM personalizzata", bindableEvent}
StarterGui:SetCore("AddAvatarContextMenuOption", options)
Rimuovere opzioni dal menu
Puoi rimuovere opzioni personalizzate e le opzioni predefinite Amico, Chat, Visualizza e Saluta dall'ACM facendo riferimento al nome dell'azione personalizzata o all'enum Enum.AvatarContextMenuOption predefinito.
Utilizza il seguente codice per rimuovere un'opzione di menu predefinita e personalizzata:
-- Rimuovi l'opzione "Azione ACM personalizzata"StarterGui:SetCore("RemoveAvatarContextMenuOption", "Azione ACM personalizzata")-- Rimuovi l'opzione predefinita "Amico" facendo riferimento all'enum AvatarContextMenuOption.FriendStarterGui:SetCore("RemoveAvatarContextMenuOption", Enum.AvatarContextMenuOption.Friend)
Personalizzare l'aspetto del menu
Per cambiare l'aspetto del menu di contesto dell'avatar, chiama StarterGui:SetCore() con l'opzione "AvatarContextMenuTheme", fornendo una tabella di parametri e valori per regolare l'aspetto del menu.
L'interfaccia utente dell'ACM include le seguenti sezioni:

A. Etichetta del nome: Il nome dell'utente del personaggio con cui si sta interagendo.
B. Cornice del pulsante: Contiene tutti i pulsanti dell'ACM.
C. Pulsanti: Pulsanti individuali per le azioni ACM predefinite o personalizzate.
Parametri di aspetto
Questi sono i parametri di personalizzazione dell'ACM:
Sfondo
| BackgroundColor | Un Color3 per lo sfondo generale dell'ACM (più utile quando non si utilizza un'immagine di sfondo). |
| BackgroundTransparency | Valore di trasparenza (0–1) per lo sfondo generale dell'ACM (più utile quando non si utilizza un'immagine di sfondo). |
| BackgroundImage | Un ID asset valido di un'immagine per lo sfondo dell'ACM. |
| BackgroundImageTransparency | Valore di trasparenza (0–1) per l'immagine di sfondo. |
| BackgroundImageScaleType | Un enum Enum.ScaleType per il ridimensionamento dell'immagine di sfondo. |
| BackgroundImageSliceCenter | Un Rect che specifica il centro di un'immagine a nove fette quando BackgroundImageScaleType è impostato su Enum.ScaleType.Slice. |
Etichetta del nome
| NameTagColor | Un Color3 per la barra che mostra quale giocatore viene interagito. |
| NameUnderlineColor | Un Color3 per la linea sottile tra l'etichetta del nome e i pulsanti di azione. |
Cornice del pulsante
| ButtonFrameColor | Un Color3 per la sezione (cornice) contenente i pulsanti di azione. |
| ButtonFrameTransparency | Valore di trasparenza (0–1) per la sezione della cornice del pulsante. |
Pulsante
| ButtonColor | Un Color3 per lo sfondo dei pulsanti di azione dell'ACM. |
| ButtonTransparency | Valore di trasparenza (0–1) per il colore di sfondo dei pulsanti di azione. |
| ButtonHoverColor | Un Color3 per lo stato di "hover" dei pulsanti di azione. |
| ButtonHoverTransparency | Valore di trasparenza (0–1) per il colore di "hover" dei pulsanti di azione. |
| ButtonUnderlineColor | Un Color3 per la linea sottile che separa ciascun pulsante di azione. |
| ButtonImage | Un ID asset valido di un'immagine per lo sfondo dei pulsanti. |
| ButtonImageScaleType | Un enum Enum.ScaleType per il ridimensionamento dell'immagine del pulsante. |
| ButtonImageSliceCenter | Un Rect che specifica il centro di un'immagine a nove fette quando ButtonImageScaleType è impostato su Enum.ScaleType.Slice. |
Testo
| Font | Un valore enum Enum.Font per l'etichetta del nome e il testo dei pulsanti. |
| TextColor | Un Color3 per tutto il testo all'interno dell'ACM. |
| TextScale | Un valore float per scalare le dimensioni del testo predefinite di ciascun elemento. |
Varie immagini
| LeaveMenuImage | Un ID asset di un'immagine per il pulsante di chiusura dell'ACM. |
| ScrollLeftImage | Un ID asset di un'immagine per il pulsante "scorri a sinistra" del carosello. |
| ScrollRightImage | Un ID asset valido di un'immagine per il pulsante "scorri a destra" del carosello. |
Personaggio selezionato
| SelectedCharacterIndicator | Il MeshPart che fluttua sopra la testa di un personaggio per indicare che è selezionato. |
Dimensioni e posizione
| Size | Un UDim2 per la dimensione complessiva dell'ACM. |
| MinSize | Un Vector2 che specifica la dimensione minima dell'ACM. |
| MaxSize | Un Vector2 che specifica la dimensione massima dell'ACM. |
| AspectRatio | Un valore float che specifica la larghezza e l'altezza relative dell'ACM. |
| AnchorPoint | Il AnchorPoint dell'ACM. |
| OnScreenPosition | Un UDim2 che specifica la posizione dell'ACM sullo schermo (la posizione verso cui transita quando aperto). |
| OffScreenPosition | Un UDim2 che specifica la posizione fuori dallo schermo dell'ACM (la posizione da cui transita quando aperto/chiuso). |
Esempio di personalizzazione
Il seguente esempio di codice personalizza il tema dell'ACM utilizzando alcuni parametri di base:
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})
