尋找在體驗中尋找朋友可能很困難。 朋友定位器 開發者模組 讓玩家容易找到並傳送到他們在體驗中的朋友。
模組使用
安裝
要在體驗中使用 FriendsLocator 模組:
確認 模型排序 已選擇,然後按一下 查看全部 按鈕 for 類別 。
找到並點擊 Dev Modules 磚塊。
找到 朋友偵測器 模組,然後按一下它,或者拖曳到 3D 檢視窗。
在 Explorer 窗口中,將整個 FriendsLocator 模型 移動到 ServerScriptService 中。執行體驗時,模組將分配到各個服務並開始執行。
在工作室測試
要在 Studio 中測試模組, FriendsLocator 模組必須在多個客戶端模擬中執行,因為在單個遊戲測試中沒有朋友。
在 StarterPlayerScripts 中,創建一個新的 LocalScript 並將其重命名為 ConfigureFriendsLocator 。
將以下代碼貼入新的 配置朋友偵測器 指令碼。 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模組會暴露事件,讓您可以在用戶與位置圖示交互時介紹自訂行為。
確認您創建了 ConfigureFriendsLocator 指令,以在 TestInStudio 中呈現。
將 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替換預設風格的虛擬人偶頭像UI。
要取代預設 UI:
在 ScreenGui 容器內建立新的 Class.ScreenGui 實例。
完成後, 停用 父親ScreenGui,以便模組在需要時不會顯示自訂定位器使用者介面。
(可選) 如果你想要朋好友的虛擬人偶肖像和 DisplayName 在自訂 UI 中某個地方顯示,你可以將以下例子放置在 FriendLocator 框架內。
- 一個名為 ImageLabel 的 Class.ImageLabel 。
- Class.TextLabel 的名稱 DisplayName。
模組將尋找這些項目並顯示朋好友的虛擬人偶肖像和/或顯示名稱。
API 參考
功能
設定
通過 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 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 | 是否在本地玩家的屏幕上目前顯示定位圖示。注意,此動作仍然會在 true 如果 alwaysOnTop 是 false 和定位器在 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)