朋友定位器

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

在體驗中找到朋友可能很挑戰。朋友尋找者 開發者模組 讓玩家輕鬆在空間方內找到並傳送到他們的朋友。

模組使用

安裝

要在體驗中使用 FriendsLocator 模組:

  1. 視圖標籤開啟工具箱,然後選擇 創作者商店 標籤。

    Toolbox toggle button in Studio
  2. 確保 模型 排序已選擇,然後單擊 查看全部 按鈕以獲得 類別

  3. 找到並點擊 開發模組 磚塊。

  4. 尋找 朋友尋找者 模組,然後單擊它或拖放到 3D 視檢視中。

  5. 導航器 窗口中,將整個 FriendsLocator 模型移至 ServerScriptService 。執行體驗時,模組會分配到各種服務並開始運行。

在工作室測試

要在 Studio 測試模組,必須在多個客戶端模擬中執行 FriendsLocator 模組,因為在單人試玩中不會有朋友存在。

  1. 新手玩家腳本 中,創建一個新的 LocalScript 並將其重命名為 配置朋友定位器

  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. 請確認您創建了 配置朋友定位器 腳本,如同在 Studio 測試 中所述。

  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。

要取代預設介面:

  1. ScreenGui 容器內創建一個新的 實例

  2. 創建一個名為 Frame 的實例 朋友定位器 作為新的 ScreenGui 的兒童,然後添加元素如 ImageLabels , TextLabels 來設計自定義用戶界面。

  3. 完成時, 停用ScreenGui,直到需要時才顯示自定義定位器用戶介面。

  4. (可選) 如果你想要朋好友的頭像出現在自定義介面的某個地方,你可以將下列實例放置在 朋友定位器 框架內。

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

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:CFrameCFrame 玩家的 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 中連接。

參數
玩家:PlayerPlayer 屬於定位器圖示所屬的對象。
playerCFrame:CFrameCFrame 玩家的 Humanoid.RootPart 那個定位器圖示所屬的。
可見:boolean尋找器圖示目前是否已顯示在本地玩家的螢幕上。請注意,如果 alwaysOnTopfalse,那麼此操作仍然會是 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)