Es kann eine Herausforderung sein, Freunde während des Erlebnisses zu finden. Das FriendsLocator Entwicklermodul ermöglicht es Spielern, ihre Freunde innerhalb eines Ortes leicht zu finden und zu ihnen zu teleportieren.
Moduld Nutzung
Installation
Um das FriendsLocator-Modul in einem Erlebnis zu verwenden:
Öffnen Sie im Menü Fenster von Studio oder in der Werkzeugleiste des Start-Tabs die Toolbox und wählen Sie den Creator Store-Tab.

Stellen Sie sicher, dass die Sortierung auf Modelle eingestellt ist, und klicken Sie dann auf die Schaltfläche Alle anzeigen für Kategorien.

Suchen Sie die Kachel Pakete und klicken Sie darauf.
Suchen Sie das Freundeslokator-Modul und klicken Sie darauf oder ziehen Sie es per Drag-and-Drop in die 3D-Ansicht.

Verschieben Sie im Explorer-Fenster das gesamte FriendsLocator-Modell in ReplicatedStorage. Beim Ausführen des Erlebnisses beginnt das Modul mit der Ausführung.
Testen in Studio
Um das Modul in Studio zu testen, muss das FriendsLocator-Modul innerhalb einer Multi-Client-Simulation ausgeführt werden, da in einem Einzelspielertest keine Freunde vorhanden sein werden.
Erstellen Sie in StarterPlayerScripts ein neues LocalScript und benennen Sie es in ConfigureFriendsLocator um.

Fügen Sie den folgenden Code in das neue ConfigureFriendsLocator-Skript ein. Die Einstellung showAllPlayers innerhalb der configure-Funktion stellt sicher, dass Lokatoren für alle Benutzer während des Testens in Studio angezeigt werden, jedoch nicht an einem veröffentlichten Ort.
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Ermöglicht das Debuggen in Studio})Starten Sie von Studios Mezzanin aus eine Multi-Client-Simulation mit 2 Clients. Es werden drei neue Instanzen von Studio geöffnet; ein simulierter Server und zwei simulierte Clients.

Gehen Sie in eine der Client-Studio-Instanzen, bewegen Sie sich 100 Studs von der anderen Figur entfernt, und Sie sollten ein Locator-Icon über ihrem Kopf sehen.

Mit Ereignissen verbinden
Das FriendsLocator-Modul stellt Ereignisse bereit, damit Sie benutzerdefinierte Verhaltensweisen einführen können, wenn Benutzer mit einem Locator-Symbol interagieren.
Stellen Sie sicher, dass Sie das im Abschnitt Testen in Studio beschriebene ConfigureFriendsLocator-Skript erstellt haben.
Fügen Sie die Zeilen 8 und 11-13 zum Skript hinzu:
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Ermöglicht das Debuggen in StudioteleportToFriend = false, -- Verhindert Teleportation beim Klicken/Tippen auf das Symbol})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("Sie haben auf das Locator-Icon für", player.DisplayName, "geklickt")end)Führen Sie einen Multi-Client-Test durch und klicken Sie auf das Locator-Symbol einer anderen Figur. Beachten Sie, dass Ihre Figur nicht an diesen Standort teleportiert wird und das Ereignis ausgelöst wird, um eine benutzerdefinierte Verarbeitung der Symbolklicks zu ermöglichen.
Benutzerdefinierte Locator-UI
Wenn der Standardstil nicht zu Ihrem Erlebnis passt, können Sie die standardmäßige Avatar-Porträt-UI durch Ihre eigene UI ersetzen.

Um die Standard-UI zu ersetzen:
Erstellen Sie eine neue ScreenGui-Instanz im StarterGui-Container.

Erstellen Sie eine Frame-Instanz mit dem Namen FriendLocator als Kind der neuen ScreenGui und fügen Sie Elemente wie ImageLabels und TextLabels hinzu, um Ihre benutzerdefinierte UI zu gestalten.

Deaktivieren Sie, wenn Sie fertig sind, die übergeordnete ScreenGui, damit das Modul die benutzerdefinierte Locator-UI nicht anzeigt, bis sie benötigt wird.

(Optional) Wenn Sie das Avatar-Porträt eines Freundes und den DisplayName irgendwo in der benutzerdefinierten UI anzeigen möchten, können Sie die folgenden Instanzen im FriendLocator-Frame platzieren.
- Ein ImageLabel mit dem Namen Portrait.
- Ein TextLabel mit dem Namen DisplayName.

Das Modul sucht nach diesen Elementen und zeigt das Avatar-Porträt und/oder den Anzeigenamen des Freundes an.
API-Referenz
Funktionen
konfigurieren
configure(config: table)
Überschreibt standardmäßige Konfigurationsoptionen über die folgenden Schlüssel/Werte in der config-Tabelle.
| Schlüssel | Beschreibung | Standard |
|---|---|---|
| alwaysOnTop | Wenn true, werden Locator-Symbole oben auf allem angezeigt, wodurch verhindert wird, dass sie von 3D-Weltobjekten blockiert werden. | true |
| showAllPlayers | Wenn true, werden Standorte für alle Spieler angezeigt, nicht nur für Freunde; dies kann helfen, die Funktionalität des Moduls in Studio zu überprüfen. | false |
| teleportToFriend | Teleportiert die Spielerfigur an den Standort des Freundes, wenn ihr Locator-Symbol angeklickt oder angetippt wird. | true |
| thresholdDistance | Schwellenwert für die Kameraentfernung, bei der Locator-Symbole erscheinen; Freunde, die näher als diese Entfernung sind, zeigen keine Symbole an. | 100 |
| maxLocators | Maximale Anzahl von Locator-Symbolen, die jederzeit angezeigt werden. | 10 |
LocalScript - ConfigureFriendsLocatorlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({alwaysOnTop = true,showAllPlayers = false,teleportToFriend = true,thresholdDistance = 100,maxLocators = 10})
Ereignisse
geklickt
Fired, wenn ein Locator-Symbol vom lokalen Spieler angeklickt/aktiviert wird. Dieses Ereignis kann nur in einem LocalScript verbunden werden.
| Parameter | |
|---|---|
| player: Player | Spieler, dem das Locator-Symbol gehört. |
| playerCFrame: CFrame | CFrame des Humanoid.RootPart des Spielers, dem das Locator-Symbol gehört. |
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
local localPlayer = Players.LocalPlayer
FriendsLocator.clicked:Connect(function(player, playerCFrame)
-- Streaming um den Zielstandort anfordern
if Workspace.StreamingEnabled then
local success, errorMessage = pcall(function()
localPlayer:RequestStreamAroundAsync(playerCFrame.Position)
end)
if not success then
print(errorMessage)
end
end
print("Sie haben auf das Locator-Icon für", player.DisplayName, "an der Position", playerCFrame.Position, "geklickt")
end)
sichtbarkeitChanged
Fired, wenn ein Locator-Symbol auf dem Bildschirm des lokalen Spielers angezeigt/versteckt wird. Dieses Ereignis kann nur in einem LocalScript verbunden werden.
| Parameter | |
|---|---|
| player: Player | Player-Objekt, dem das Locator-Symbol gehört. |
| playerCFrame: CFrame | CFrame des Humanoid.RootPart des Spielers, dem das Locator-Symbol gehört. |
| isVisible: boolean | Ob das Locator-Symbol derzeit auf dem Bildschirm des lokalen Spielers sichtbar ist. Beachten Sie, dass dies immer noch true sein wird, wenn alwaysOnTop false ist und der Locator hinter einem Objekt in der 3D-Welt gerendert wird. |
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
FriendsLocator.visibilityChanged:Connect(function(player, playerCFrame, isVisible)
print("Sichtbarkeit des Locator-Symbols für", player.DisplayName, ":", isVisible)
end)