Das Avatar-Kontextmenü (ACM) erleichtert es Nutzern, miteinander zu interagieren. Wenn das ACM in deinem Spiel aktiviert ist, kann ein Nutzer zu dem Charakter eines anderen Nutzers gehen und auf ihn klicken, um ein kleines Menü mit mehreren Standardoptionen zu öffnen. Der Spieler kann eine Freundschaftsanfrage senden, einen privaten Chat beginnen, das Profil des Nutzers ansehen oder winken.
Nachdem du das ACM aktiviert hast, kannst du das ACM auf folgende Weise anpassen:
- Programmgesteuert das ACM für bestimmte Nutzer öffnen und schließen.
- Benutzerdefinierte Optionen hinzufügen und vorhandene Optionen entfernen zum ACM.
- Das Erscheinungsbild des ACM anpassen, um eine einzigartige Benutzeroberfläche zu schaffen.
Aktivieren des Avatar-Kontextmenüs
Das Avatar-Kontextmenü muss mit der Option StarterGui:SetCore() "AvatarContextMenuEnabled" in einem LocalScript aktiviert werden. Das ACM eignet sich am besten für Spiele, in denen es kein vordefiniertes Verhalten gibt, wenn man auf andere Nutzer klickt.
Verwende das folgende Codebeispiel, um das ACM in einem LocalScript zu aktivieren:
-- In einem LocalScript ausführen, idealerweise innerhalb von "StarterPlayerScripts"local StarterGui = game:GetService("StarterGui")StarterGui:SetCore("AvatarContextMenuEnabled", true)
Wenn du überprüfen musst, ob das ACM aktiviert ist, kannst du den folgenden Code verwenden, um einen Booleschen Wert über den aktuellen Status des ACM zurückzugeben:
---Gibt einen Booleschen Wert zurück, der angibt, ob das ACM derzeit aktiviert ist.StarterGui:GetCore(AvatarContextMenuEnabled)
ACM öffnen und schließen
Sobald das ACM aktiviert ist, kannst du es programmgesteuert mit StarterGui öffnen und schließen.
Um das ACM programmgesteuert zu öffnen, verwende den folgenden Code:
-- Verwende StarterGui:SetCore, wobei targetPlayer ein gültiges Spielerobjekt istStarterGui:SetCore("AvatarContextMenuTarget", targetPlayer)
Um das ACM programmgesteuert zu schließen, verwende den folgenden Code:
StarterGui:SetCore("AvatarContextMenuTarget", nil)
Menüoptionen
Durch das Skripting kannst du Aktionen hinzufügen und entfernen. Standardmäßig hat das Menü die folgenden Optionen:
| Menüoption | Beschreibung |
|---|---|
| Freund | Sendet eine Freundschaftsanfrage an den ausgewählten Nutzer. |
| Chat | Öffnet ein privates Gespräch mit dem ausgewählten Nutzer im In-Game-Chat. |
| Ansicht | Öffnet ein Fenster, um das Erscheinungsbild des ausgewählten Nutzers zu inspizieren. |
| Winken | Startet eine Winken-Animation zum ausgewählten Nutzer. |
Sobald das ACM geöffnet ist, kann der Benutzer scrollen und andere Nutzer im Karussell zur Charakterauswahl auswählen. Charaktere werden basierend auf der Entfernung zum ausgewählten Charakter sortiert. Das Menü aktualisiert sich nur beim Öffnen, und die Liste der verfügbaren Nutzer wird beim Scrollen wiederholt.

Menüoptionen hinzufügen
Sobald es aktiviert ist, können spielspezifische Aktionen zum ACM hinzugefügt werden. Zum Beispiel könnte ein Spiel Handelsanfragen, Optionen zum Hinzufügen zur Gruppe oder andere spezielle Interaktionen erlauben.
Das folgende Beispiel zeigt, wie eine benutzerdefinierte Aktion zum Avatar-Kontextmenü hinzugefügt wird:
local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local player = Players.LocalPlayer
-- Verbinde eine Funktion mit einem "BindableEvent"
local bindableEvent = Instance.new("BindableEvent")
local function onCustomACMAction(targetPlayer)
-- An diesem Punkt könntest du InvokeServer() auf einer RemoteFunction aufrufen, um den Server über die Auswahl zu informieren
print("ACM-Ereignis ausgewählt von " .. player.Name .. " auf " .. targetPlayer.Name)
end
bindableEvent.Event:Connect(onCustomACMAction)
-- Füge die ACM-Option mit SetCore() und "AddAvatarContextMenuOption" hinzu
local options = {"Benutzerdefinierte ACM-Aktion", bindableEvent}
StarterGui:SetCore("AddAvatarContextMenuOption", options)
Menüoptionen entfernen
Du kannst benutzerdefinierte und die Standardoptionen Freund hinzufügen, Chat, Ansicht und Winken aus dem ACM entfernen, indem du den Namen der benutzerdefinierten Aktion oder das Standard-Enum.AvatarContextMenuOption-Enum referenzierst.
Verwende den folgenden Code, um eine Standard- und benutzerdefinierte Menüoption zu entfernen:
-- Entferne die Option "Benutzerdefinierte ACM-Aktion"StarterGui:SetCore("RemoveAvatarContextMenuOption", "Benutzerdefinierte ACM-Aktion")-- Entferne die Standardoption "Freund", indem du das Enum AvatarContextMenuOption.Friend referenzierstStarterGui:SetCore("RemoveAvatarContextMenuOption", Enum.AvatarContextMenuOption.Friend)
Menüaussehen anpassen
Um das Erscheinungsbild des Avatar-Kontextmenüs zu ändern, rufe StarterGui:SetCore() mit der Option "AvatarContextMenuTheme" auf und übergebe eine Tabelle von Parametern und Werten, um das Menüaussehen anzupassen.
Die Benutzeroberfläche des ACM umfasst die folgenden Abschnitte:

A. Namensschild: Der Benutzername des Charakters, mit dem interagiert wird.
B. Schaltflächenrahmen: Enthält alle ACM-Schaltflächen.
C. Schaltflächen: Einzelne Schaltflächen für die Standard- oder benutzerdefinierten ACM-Aktionen.
Erscheinungsbildparameter
Dies sind die Anpassungsparameter des ACM:
Hintergrund
| BackgroundColor | Ein Color3 für den gesamten Hintergrund des ACM (am nützlichsten, wenn kein Hintergrundbild verwendet wird). |
| BackgroundTransparency | Transparenzwert (0–1) für den gesamten Hintergrund des ACM (am nützlichsten, wenn kein Hintergrundbild verwendet wird). |
| BackgroundImage | Eine gültige Asset-ID eines Bildes für den Hintergrund des ACM. |
| BackgroundImageTransparency | Transparenzwert (0–1) für das Hintergrundbild. |
| BackgroundImageScaleType | Ein Enum.ScaleType-Enum für die Skalierung des Hintergrundbildes. |
| BackgroundImageSliceCenter | Ein Rect, das das Zentrum eines neun-geteilten Bildes angibt, wenn BackgroundImageScaleType auf Enum.ScaleType.Slice gesetzt ist. |
Namensschild
| NameTagColor | Ein Color3 für die Leiste, die zeigt, mit welchem Spieler interagiert wird. |
| NameUnderlineColor | Ein Color3 für die dünne Linie zwischen dem Namensschild und den Aktionsschaltflächen. |
Schaltflächenrahmen
| ButtonFrameColor | Ein Color3 für den Abschnitt (Rahmen), der die Aktionsschaltflächen enthält. |
| ButtonFrameTransparency | Transparenzwert (0–1) für den Abschnitt der Schaltflächenrahmen. |
Schaltfläche
| ButtonColor | Ein Color3 für den Hintergrund der ACM-Aktionsschaltflächen. |
| ButtonTransparency | Transparenzwert (0–1) für die Hintergrundfarbe der Aktionsschaltflächen. |
| ButtonHoverColor | Ein Color3 für den "Hover"-Zustand der Aktionsschaltflächen. |
| ButtonHoverTransparency | Transparenzwert (0–1) für die "Hover"-Farbe der Aktionsschaltflächen. |
| ButtonUnderlineColor | Ein Color3 für die dünne Linie, die jede Aktionsschaltfläche trennt. |
| ButtonImage | Eine gültige Asset-ID eines Bildes für den Hintergrund der Schaltflächen. |
| ButtonImageScaleType | Ein Enum.ScaleType-Enum für die Skalierung von Schaltflächenbildern. |
| ButtonImageSliceCenter | Ein Rect, das das Zentrum eines neun-geteilten Bildes angibt, wenn ButtonImageScaleType auf Enum.ScaleType.Slice gesetzt ist. |
Text
| Font | Ein Enum.Font-Enumwert für das Namensschild und den Schaltflächentext. |
| TextColor | Ein Color3 für allen Text im ACM. |
| TextScale | Ein Float-Wert zum Skalieren der Standardtextgrößen jedes Elements. |
Verschiedene Bilder
| LeaveMenuImage | Eine Asset-ID eines Bildes für den ACM-Schließen-Button. |
| ScrollLeftImage | Eine Asset-ID eines Bildes für den Karussell-Button "nach links scrollen". |
| ScrollRightImage | Eine gültige Asset-ID eines Bildes für den Karussell-Button "nach rechts scrollen". |
Ausgewählter Charakter
| SelectedCharacterIndicator | Das MeshPart, das über dem Kopf eines Charakters schwebt, um anzuzeigen, dass er ausgewählt ist. |
Größe und Position
| Size | Ein UDim2 für die Gesamtgröße des ACM. |
| MinSize | Ein Vector2, das die Mindestgröße des ACM angibt. |
| MaxSize | Ein Vector2, das die Höchstgröße des ACM angibt. |
| AspectRatio | Ein Float-Wert, der das Verhältnis von Breite und Höhe des ACM angibt. |
| AnchorPoint | Der AnchorPoint des ACM. |
| OnScreenPosition | Ein UDim2, das die On-Screen-Position des ACM angibt (die Position, zu der es sich bewegt, wenn es geöffnet wird). |
| OffScreenPosition | Ein UDim2, das die Off-Screen-Position des ACM angibt (die Position, von der es geöffnet/geschlossen wird). |
Beispielanpassung
Das folgende Codebeispiel passt das ACM-Thema mit einigen grundlegenden Parametern an:
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})
