在體驗中找到朋友可能很挑戰。朋友尋找者 開發者模組 讓玩家輕鬆在空間方內找到並傳送到他們的朋友。
模組使用
安裝
要在體驗中使用 FriendsLocator 模組:
確保 模型 排序已選擇,然後單擊 查看全部 按鈕以獲得 類別 。
找到並點擊 開發模組 磚塊。
尋找 朋友尋找者 模組,然後單擊它或拖放到 3D 視檢視中。
在 導航器 窗口中,將整個 FriendsLocator 模型移至 ServerScriptService 。執行體驗時,模組會分配到各種服務並開始運行。
在工作室測試
要在 Studio 測試模組,必須在多個客戶端模擬中執行 FriendsLocator 模組,因為在單人試玩中不會有朋友存在。
在 新手玩家腳本 中,創建一個新的 LocalScript 並將其重命名為 配置朋友定位器 。
將以下代碼貼到新的 配置朋友定位器 指令碼本中。在 showAllPlayers 函數中的設置確保在 Studio 測試時顯示標示符給所有用戶,但不會在發布的空間方顯示。
本地腳本 - 配置朋友定位器local RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- 允許在 Studio 中進行偵錯})從工具欄的 測試 標籤,選擇以下組合對於 客戶和服務器 ,然後單擊 開始 按鈕。將會開啟三個新的 Studio 實例;一個模擬伺服器和兩個模擬客戶。
進入任何 客戶端 Studio 實例,離開另一個角色 100 個單位的距離,你應該看到一個 定位器圖示 出現在它的頭上。
連接到事件
FriendsLocator模組暴露事件,這樣當使用者與定位器圖示互動時,您就可以介紹自訂行為。
請確認您創建了 配置朋友定位器 腳本,如同在 Studio 測試 中所述。
將行 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)執行 多客戶端測試,然後點擊另一個角色的定位器圖標。注意您的角色不會傳送到該位置,並啟動事件以允許自定義處理圖示點擊。
自訂定位器介面
如果預設風格不適合您的體驗,您可以用自己的介面替換預設的人物肖像 UI。

要取代預設介面:
在 ScreenGui 容器內創建一個新的 實例 。
創建一個名為 Frame 的實例 朋友定位器 作為新的 ScreenGui 的兒童,然後添加元素如 ImageLabels , TextLabels 來設計自定義用戶界面。
完成時, 停用 父ScreenGui,直到需要時才顯示自定義定位器用戶介面。
(可選) 如果你想要朋好友的頭像出現在自定義介面的某個地方,你可以將下列實例放置在 朋友定位器 框架內。
- 名稱 ImageLabel 的 肖像 。
- 名稱 TextLabel 的 顯示名稱 。
模組將尋找這些項目,並顯示朋好友的虛擬人偶頭像和/或顯示名稱各自。
API 參考
功能
設定
設定(config: 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:CFrame | CFrame 玩家的 Humanoid.RootPart 那個定位器圖示所屬的。 |
本地脚本
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
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 中連接。
參數 | |
---|---|
玩家:Player | Player 屬於定位器圖示所屬的對象。 |
playerCFrame:CFrame | CFrame 玩家的 Humanoid.RootPart 那個定位器圖示所屬的。 |
可見:boolean | 尋找器圖示目前是否已顯示在本地玩家的螢幕上。請注意,如果 alwaysOnTop 是 false,那麼此操作仍然會是 true,因為定位器在 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)