朋友定位器

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

在体验中找到朋友可能很挑战。The FriendsLocator 开发者模块 让玩家轻松找到并传送到场景置内的朋友。

模块使用

安装

要在体验中使用 FriendsLocator 模块:

  1. 视图选项卡打开工具箱并选择 创建者商店 选项卡。

    Toolbox toggle button in Studio
  2. 确保 模型 排序已选择,然后单击 查看全部 按钮以获取 类别

  3. 找到并单击 开发模块 瓦片。

  4. 找到 朋友定位器 模块,单击它或拖放到 3D 视查看中。

  5. 浏览器 窗口中,将整个 FriendsLocator 模型移至 ServerScriptService 。在运行体验时,模块将分配到各种服务并开始运行。

在工作室测试

要在 Studio 测试模块,必须在多客户端模拟中运行 朋友定位器 模块,因为在单人游戏测试中不会有朋友存在。

  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(), -- 允许在工作室进行调试
    })
  3. 从工具栏的 测试 选项卡,选择以下组合对于 客户端和服务器 ,然后单击 开始 按钮。三个新实例的 Studio 将打开;一个模拟服务器和两个模拟客户端。

  4. 进入任何 客户端 工作室实例,移动 100 格远离另一个角色,你应该看到一个 定位器图标 出现在它的头顶上。

连接到事件

朋友定位器 模块暴露 事件 以便您在用户与定位器图标互动时介绍自定义行为。

  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(), -- 允许在工作室进行调试
    teleportToFriend = false, -- 防止图标单击/点击时传送
    })
    FriendsLocator.clicked:Connect(function(player, playerCFrame)
    print("You clicked on locator icon for", player.DisplayName)
    end)
  3. 进行 多客户端测试 并单击另一个角色的定位器标志。注意您的角色不会传送到该位置,事件触发以允许自定义处理图标单击。

自定义定位器 UI

如果默认风格不适合您的体验,您可以替换默认的虚拟形象肖像 UI 为自己的 UI。

要替换默认 UI:

  1. 在 StarterGui 容器内创建一个新实例。

  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)