朋友定位器

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

尋找在體驗中尋找朋友可能很困難。 朋友定位器 開發者模組 讓玩家容易找到並傳送到他們在體驗中的朋友。

模組使用

安裝

要在體驗中使用 FriendsLocator 模組:

  1. 檢視 標籤開啟 工具箱 並選擇 創作者商店 標籤。

    Toolbox toggle button in Studio
  2. 確認 模型排序 已選擇,然後按一下 查看全部 按鈕 for 類別

  3. 找到並點擊 Dev Modules 磚塊。

  4. 找到 朋友偵測器 模組,然後按一下它,或者拖曳到 3D 檢視窗。

  5. 在 Explorer 窗口中,將整個 FriendsLocator 模型 移動到 ServerScriptService 中。執行體驗時,模組將分配到各個服務並開始執行。

在工作室測試

要在 Studio 中測試模組, FriendsLocator 模組必須在多個客戶端模擬中執行,因為在單個遊戲測試中沒有朋友。

  1. StarterPlayerScripts 中,創建一個新的 LocalScript 並將其重命名為 ConfigureFriendsLocator

  2. 將以下代碼貼入新的 配置朋友偵測器 指令碼。 showAllPlayers 設定在 配置 功能內確保在 Studio 中測試時檢查到所有用戶,但不會在發佈空間。

    本地指令碼 - 設定朋友定位器

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- 允許在 Studio 中進行調試
    })
  3. 測試 標籤選擇以下組合對於 客戶和伺服器 ,然後按一下 開始 按鈕。三個新的 Studio 實例將會開啟;一個模擬伺服器和兩個模擬客戶端。

  4. 進入任何 客戶端 Studio 實例,移動 100 個單位的距離離開另一個角色,並且你應該看到一個 定位器圖示 出現在它的頭上。

連接到事件

FriendsLocator模組會暴露事件,讓您可以在用戶與位置圖示交互時介紹自訂行為。

  1. 確認您創建了 ConfigureFriendsLocator 指令,以在 TestInStudio 中呈現。

  2. 將 8 和 11-13 行添加到指令碼:

    本地指令碼 - 設定朋友定位器

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- 允許在 Studio 中進行調試
    teleportToFriend = false, -- 防止按鈕點擊/點擊時傳送
    })
    FriendsLocator.clicked:Connect(function(player, playerCFrame)
    print("You clicked on locator icon for", player.DisplayName)
    end)
  3. 執行多重客戶端測試並且點擊另一個角色的位置。注意您的角色不會傳送到那個位置,事件會導發來允許自訂圖示點擊的處理。

自訂定位器介面

如果預設風格不適合您的體驗,您可以用自己的UI替換預設風格的虛擬人偶頭像UI。

要取代預設 UI:

  1. ScreenGui 容器內建立新的 Class.ScreenGui 實例。

  2. 在新的 Frame 中的一個名為 FriendLocatorScreenGui 實例創建,然後添加像 1> Class.ImageLabel|ImageTags1> 、4> Class.TextLabel|TextTags4> 等元素來設計您自訂 UI 的客戶端。

  3. 完成後, 停用 父親ScreenGui,以便模組在需要時不會顯示自訂定位器使用者介面。

  4. (可選) 如果你想要朋好友的虛擬人偶肖像和 DisplayName 在自訂 UI 中某個地方顯示,你可以將以下例子放置在 FriendLocator 框架內。

    • 一個名為 ImageLabelClass.ImageLabel
    • Class.TextLabel 的名稱 DisplayName。

    模組將尋找這些項目並顯示朋好友的虛擬人偶肖像和/或顯示名稱。

API 參考

功能

設定

設定(配置: table )

通過 config 表中的鍵值/值來覆蓋預設設定選項。

鑰匙說明預設
alwaysOnTop如果 true ,會在所有東西上顯示地點圖示,防止 3D 世界物件阻止它們。真的
showAllPlayers如果 true ,顯示所有玩家的位置,不僅限朋友;這可以幫助確認模塊在 Studio 的功能。
teleportToFriend當玩家按一下或點擊其位置標題圖示時,傳送玩家角色到朋好友的位置。真的
thresholdDistance觸發器圖示的顏色距離;離此距離越近的好友將不會顯示圖示。100
maxLocators顯示時間任何時間的地圖標最大數量。10
本地指令碼 - 設定朋友定位器

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
FriendsLocator.configure({
alwaysOnTop = true,
showAllPlayers = false,
teleportToFriend = true,
thresholdDistance = 100,
maxLocators = 10
})

事件

已按一下

發生在本地玩家按一下/啟動位置圖示時。 此事件只能連接在 LocalScript 中。

參數
玩家: Player玩家,該指定圖示屬於。
playerCFrame: CFrameCFrame 的玩家的 Humanoid.RootPart ,該位置圖示圖示屬於。
本地指令碼

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)
-- 請求流媒體在目標位置
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)

可見度已變更

在本地玩家的屏幕上顯示/隱藏地點圖示時發生火災。這個事件只能連接在 LocalScript 中。

參數
玩家: PlayerPlayer
playerCFrame:CFrameCFrame 的玩家的 Humanoid.RootPart ,該位置圖示圖示屬於。
可見: boolean是否在本地玩家的屏幕上目前顯示定位圖示。注意,此動作仍然會在 true 如果 alwaysOnTopfalse 和定位器在 3D 世界中渲染後的對象。
本地指令碼

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)