朋友定位器

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

在遊戲中找到朋友可能會很具挑戰性。 FriendsLocator 開發者模組 讓玩家可以輕鬆地在遊戲中找到並傳送到他們的朋友。

模組使用

安裝

要在一個經驗中使用 FriendsLocator 模組:

  1. 從 Studio 的 視窗 菜單或 主頁 標籤工具列,開啟 工具箱 並選擇 創作者商店 標籤。

  2. 確保選擇了 模型 排序,然後點擊 查看全部 按鈕以查看 類別

  3. 找到並點擊 套件 瓦片。

  4. 找到 朋友定位器 模組並點擊,或將其拖放到 3D 視圖中。

  5. 探索器 視窗中,將整個 FriendsLocator 模型移到 ReplicatedStorage 中。運行經驗時,模組將開始運作。

在 Studio 中測試

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

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

  2. 將以下代碼粘貼到新的 ConfigureFriendsLocator 腳本中。 configure 函數中的 showAllPlayers 設定可確保在 Studio 中測試時顯示所有用戶的定位器,但在發佈的地點中不會如此。

    LocalScript - ConfigureFriendsLocator

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- 允許在 Studio 中進行調試
    })
  3. 從 Studio 的中夾層,開始一個 多客戶端模擬,並使用 2 個客戶端。三個新的 Studio 實例將被打開;一個模擬的伺服器和兩個模擬的客戶端。

    伺服器及客戶端選項在 Studio 的測試模式下拉選單。
  4. 進入任一 客戶端 Studio 實例,與另一個角色的距離移動 100 studs,您應該會看到出現在角色頭頂上的 定位器圖示

連接到事件

FriendsLocator 模組公開了 事件,這樣您就可以在用戶與定位器圖示互動時引入自定義行為。

  1. 確保您已創建在 Studio 中測試中概述的 ConfigureFriendsLocator 腳本。

  2. 將第 8 行和 11-13 行添加到腳本中:

    LocalScript - ConfigureFriendsLocator

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- 允許在 Studio 中進行調試
    teleportToFriend = false, -- 防止在圖示點擊/點擊時傳送
    })
    FriendsLocator.clicked:Connect(function(player, playerCFrame)
    print("您點擊了定位器圖示,對應的玩家是", player.DisplayName)
    end)
  3. 進行一個 多客戶端測試,並單擊另一個角色的定位器圖示。注意您的角色不會傳送到該位置,事件觸發以便自定義處理圖示點擊。

自定義定位器 UI

如果默認樣式不符合您的經驗,您可以用自己的 UI 替換默認的虛擬形象肖像 UI。

要替換默認的 UI:

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

  2. 創建一個名為 FriendLocatorFrame 實例作為新 ScreenGui 的子項,然後添加 ImageLabelsTextLabels 等元素來設計您的自定義 UI。

  3. 完成後,停用ScreenGui,以便該模組在需要之前不顯示自定義定位器 UI。

  4. (可選) 如果您希望朋友的虛擬形象肖像和 DisplayName 在自定義 UI 中某處顯示,您可以將以下實例放置在 FriendLocator 框架中。

    該模組會尋找這些項目並分別顯示朋友的虛擬形象肖像和/或顯示名稱。

API 參考

函數

configure

configure(config: table)

通過 config 表格中的以下鍵/值來重寫默認配置選項。

描述默認值
alwaysOnTop如果為 true,則在所有內容上方顯示定位器圖示,防止它們被 3D 世界物體擋住。true
showAllPlayers如果為 true,則顯示所有玩家的位置,而不僅僅是朋友;這可以幫助驗證模組在 Studio 中的功能。false
teleportToFriend當點擊或點擊朋友的定位器圖示時,傳送玩家角色到朋友的位置。true
thresholdDistance定位器圖示出現的相機距離閾值;距離小於此的朋友將不顯示圖示。100
maxLocators在任何給定時間顯示的最大定位器圖示數量。10
LocalScript - ConfigureFriendsLocator

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

事件

clicked

當本地玩家點擊/激活定位器圖示時觸發。此事件只能在 LocalScript 中連接。

參數
player: Player定位器圖示所屬的玩家。
playerCFrame: CFrame定位器圖示所屬玩家的 Humanoid.RootPartCFrame
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local FriendsLocator = require(ReplicatedStorage.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("您點擊了定位器圖示,對應的玩家是", player.DisplayName, "在位置", playerCFrame.Position)
end)

visibilityChanged

當定位器圖示在本地玩家的畫面上顯示/隱藏時觸發。此事件只能在 LocalScript 中連接。

參數
player: Player定位器圖示所屬的 Player 對象。
playerCFrame: CFrame定位器圖示所屬玩家的 Humanoid.RootPartCFrame
isVisible: boolean定位器圖示目前在本地玩家的畫面上是否可見。請注意,如果 alwaysOnTopfalse 且定位器在 3D 世界中的物體後面渲染,這仍然會是 true
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
FriendsLocator.visibilityChanged:Connect(function(player, playerCFrame, isVisible)
print("定位器圖示對於", player.DisplayName, "的可見性:", isVisible)
end)
©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。