Freunde-Lokator

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

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:

  1. Von der Ansicht-Registerkarte öffnen Sie die Werkzeugkiste und wählen Sie die Creator-Store -Registerkarte.

    Toolbox toggle button in Studio
  2. Stellen Sie sicher, dass die Models Sortierung ausgewählt ist, dann klicken Sie auf die Alle anzeigen Schaltfläche für Kategorien .

  3. Suchen Sie die Dev-Module -Kachel und klicken Sie darauf.

  4. Suchen Sie das Friends Locator -Modul und klicken Sie darauf, oder ziehen Sie es in die 3D-Ansicht.

  5. 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.

  1. In StarterPlayerScripts , erstellen Sie ein neues LocalScript und benennen Sie es Konfigurieren SieFriendsLocator um.

  2. 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 SieFriendsLocator

    local 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
    })
  3. 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.

  4. 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.

  1. Stellen Sie sicher, dass Sie das ConfigureFriendsLocator Skript in Test in Studio erstellt haben.

  2. Füge Zeilen 8 und 11-13 zum Skript, das. PL: die Skriptshinzu:

    LocalScript - Konfigurieren SieFriendsLocator

    local 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
    teleportToFriend = 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)
  3. 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:

  1. Erstellen Sie eine neue ScreenGui Instanz innerhalb des StarterGui -Containers.

  2. Erstellen Sie eine Frame Instanz mit dem Namen FreundLocator als Kind der neuen ScreenGui, dann fügen Sie Elemente wie 2> Class.ImageLabel|ImageTags2> und 5> Class.TextLabel|TextTags5> hinzu, um Ihre benutzerdefinierte UI zu gestalten.

  3. Wenn Sie fertig sind, deaktivieren Sie das übergeordnete ScreenGui, damit das Modul die benutzerdefinierte Lokator-UI nicht anzeigt, bis Sie es benötigen.

  4. (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.

    Das Modul sucht nach diesen Elementen und zeigt das Avatar-Porträt des Freund:inund/oder den entsprechenden Anzeigename an.

API-Referenz

Funktionen

konfigurieren

konfigurieren(config: table )

Überschreibt Standard-Konfigurationsoptionen durch die folgenden Schlüssel/werte in der config Tabelle.

SchlüsselBeschreibungStandard
alwaysOnTopWenn true , zeigt Lokator-Symbole auf dem Bildschirm an, die die Objekte blockieren, indem sie 3D-Weltobjekte blockieren.wahr
showAllPlayersWenn true , zeigt Standorte für alle Spieler, nicht nur Freunde; dies kann helfen, die Funktionalität des Moduls in Studio zu überprüfen.falsch
teleportToFriendTeleportiert den Spielercharakter an den Freund:in, wenn sein Standort-Symbol angeklickt oder berührt wird.wahr
thresholdDistanceKamera-Entfernung-Schwellenwert, bei dem Freunde, die näher als diese Distanz sind, keine Icons anzeigen.100
maxLocatorsMaximale 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: PlayerSpieler, dem das Namensschild gehört.
playerCFrame: CFrameCFrame 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: PlayerPlayer Objekt, zu dem der Standort-Symbol gehört.
playerCFrame: CFrameCFrame des Spieler:inHumanoid.RootPart, zu dem der Locator-Ikone gehört.
istVisible: booleanOb 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)