Es kann herausfordernd sein, Freunde in-Experience zu finden. Der FriendsLocator Entwickler-Modul lässt Spieler leicht finden und teleportieren zu ihren Freunden innerhalb eines Ortes.
Modul-Einsatz
Installation
Um das FriendsLocator -Modul in einem Erlebnis zu verwenden:
Von der Ansicht-Registerkarte öffnen Sie die Werkzeugkiste und wählen Sie die Creator-Store -Registerkarte.
Stellen Sie sicher, dass die Models Sortierung ausgewählt ist, dann klicken Sie auf die Alle anzeigen Schaltfläche für Kategorien .
Suchen Sie die Dev-Module -Kachel und klicken Sie darauf.
Suchen Sie das Friends Locator -Modul und klicken Sie darauf, oder ziehen Sie es in die 3D-Ansicht.
In dem Explorer-Fenster bewegen Sie das gesamte FriendsLocator-Modell in ServerScriptService . Nach dem Laufen der Erlebniswird das Modul auf verschiedene Dienste verteilt und beginnt zu laufen.
In Studio testen
Um das Modul in Studio zu testen, muss das FriendsLocator-Modul in einer Multi-Client-Simulation ausgeführt werden, da keine Freunde in einem Spiel testenvorhanden sein werden.
In StarterPlayerScripts , erstellen Sie ein neues LocalScript und benennen Sie es Konfigurieren SieFriendsLocator um.
Fügen Sie den folgenden Code in das neue ConfigureFriendsLocatorSkript, das. PL: die Skriptsein. Die showAllPlayers -Einstellung innerhalb der configure -Funktion sorgt dafür, dass Locatoren für alle Benutzer angezeigt werden, während Sie in Studio testen, aber nicht in einem veröffentlichten Ort.
LocalScript - Konfigurieren SieFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Erlaubt es für Debug in Studio})Von der Test-Registerkarte aus wählen Sie die folgende Kombination für Clients und Server und klicken Sie dann auf die Schaltfläche Start . Drei neue Instanzen von Studio werden geöffnet; ein simulierter Server und zwei simulierte Clients.
Gehen Sie in eine der Client- Studio-Instanzen, bewegen Sie eine Entfernung von 100 Studs von dem anderen Charakter und Sie sollten einen Lokator-Symbol über seinem Kopf sehen.
Verbindung mit Ereignissen
Das FriendsLocator-Modul gibt Ereignisse preis, damit Sie benutzerdefinierte Verhaltensweisen einführen können, wenn Benutzer mit einem Locator-Symbol interagieren.
Stellen Sie sicher, dass Sie das ConfigureFriendsLocator Skript in Test in Studio erstellt haben.
Füge Zeilen 8 und 11-13 zum Skript, das. PL: die Skriptshinzu:
LocalScript - Konfigurieren SieFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Erlaubt es für Debug in StudioteleportToFriend = false, -- Verhindern Sie die Teleportation beim Klicken/Tippen auf das Symbol})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("You clicked on locator icon for", player.DisplayName)end)Führen Sie einen Multi-Client-Test durch und klicken Sie auf das Flaggen-Symbol eines anderen Charakters. Beachten Sie, dass Ihr Charakter nicht zu diesem Standort teleportiert wird, und die Ereignis-Trigger ermöglichen es, benutzerdefinierte Handhabung von Icon-Klicks zu aktivieren.
Benutzerdefinierte Markierungs-UI
Wenn der Standardstil nicht Ihrem Erlebnis entspricht, können Sie die Standard-Avatar-Porträt-UI mit Ihrer eigenen UI ersetzen.
Um die Standard-UI zu ersetzen:
Erstellen Sie eine neue ScreenGui Instanz innerhalb des StarterGui -Containers.
Wenn Sie fertig sind, deaktivieren Sie das übergeordnete ScreenGui, damit das Modul die benutzerdefinierte Lokator-UI nicht anzeigt, bis Sie es benötigen.
(Optional) Wenn Sie den Freund:inund DisplayName möchten, dass er auf irgendeinem Ort in der benutzerdefinierten UI angezeigt wird, können Sie die folgenden Instanzen innerhalb des FriendLocator- -Rahmens platzieren.
- Ein ImageLabel des Namens Porträt .
- Ein TextLabel des Namens DisplayName .
Das Modul sucht nach diesen Elementen und zeigt das Avatar-Porträt des Freund:inund/oder den entsprechenden Anzeigename an.
API-Referenz
Funktionen
konfigurieren
Überschreibt Standard-Konfigurationsoptionen durch die folgenden Schlüssel/werte in der config Tabelle.
Schlüssel | Beschreibung | Standard |
---|---|---|
alwaysOnTop | Wenn true , zeigt Lokator-Symbole auf dem Bildschirm an, die die Objekte blockieren, indem sie 3D-Weltobjekte blockieren. | wahr |
showAllPlayers | Wenn true , zeigt Standorte für alle Spieler, nicht nur Freunde; dies kann helfen, die Funktionalität des Moduls in Studio zu überprüfen. | falsch |
teleportToFriend | Teleportiert den Spielercharakter an den Freund:in, wenn sein Standort-Symbol angeklickt oder berührt wird. | wahr |
thresholdDistance | Kamera-Entfernung-Schwellenwert, bei dem Freunde, die näher als diese Distanz sind, keine Icons anzeigen. | 100 |
maxLocators | Maximale Anzahl von Lokator-Symbolen, die jederzeit angezeigt werden. | 10 |
LocalScript - Konfigurieren SieFriendsLocator
local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({alwaysOnTop = true,showAllPlayers = false,teleportToFriend = true,thresholdDistance = 100,maxLocators = 10})
Ereignisse
klicken
Feuert, wenn ein Lokalisierungs-Symbol durch den lokalen Spieler:inangeklickt/aktiviert wird. Dieses Ereignis kann nur in einem LocalScript verbunden werden.
Parameter | |
---|---|
Spieler:in: Player | Spieler, dem das Namensschild gehört. |
playerCFrame: CFrame | CFrame des Spieler:inHumanoid.RootPart, zu dem der Locator-Ikone gehört. |
Lokales Skript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
local localPlayer = Players.LocalPlayer
FriendsLocator.clicked:Connect(function(player, playerCFrame)
-- Fordern Sie die Streaming-Lokalisierung um die Ziel位置 an
if workspace.StreamingEnabled then
local success, errorMessage = pcall(function()
localPlayer:RequestStreamAroundAsync(playerCFrame.Position)
end)
if not success then
print(errorMessage)
end
end
print("You clicked on locator icon for", player.DisplayName, "at position", playerCFrame.Position)
end)
Sichtbarkeit geändert
Feuert, wenn ein Lokator-Symbol auf dem lokalen Spieler:inangezeigt/versteckt wird. Dieses Ereignis kann nur in einem LocalScript verbunden werden.
Parameter | |
---|---|
Spieler:in: Player | Player Objekt, zu dem der Standort-Symbol gehört. |
playerCFrame: CFrame | CFrame des Spieler:inHumanoid.RootPart, zu dem der Locator-Ikone gehört. |
istVisible: boolean | Ob das Lokator-Symbol auf dem lokalen Spieler:inangezeigt wird. Beachten Sie, dass dies immer noch true ist, wenn alwaysOnTop ist und der Lokator-Render hinter einem Objekt in der 3D-Welt. |
Lokales Skript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
FriendsLocator.visibilityChanged:Connect(function(player, playerCFrame, isVisible)
print("Visibility of locator icon for", player.DisplayName, ":", isVisible)
end)