在体验中找到朋友可能很挑战。The FriendsLocator 开发者模块 让玩家轻松找到并传送到场景置内的朋友。
模块使用
安装
要在体验中使用 FriendsLocator 模块:
确保 模型 排序已选择,然后单击 查看全部 按钮以获取 类别 。
找到并单击 开发模块 瓦片。
找到 朋友定位器 模块,单击它或拖放到 3D 视查看中。
在 浏览器 窗口中,将整个 FriendsLocator 模型移至 ServerScriptService 。在运行体验时,模块将分配到各种服务并开始运行。
在工作室测试
要在 Studio 测试模块,必须在多客户端模拟中运行 朋友定位器 模块,因为在单人游戏测试中不会有朋友存在。
在 启动玩家脚本 中,创建一个新的 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 将打开;一个模拟服务器和两个模拟客户端。
进入任何 客户端 工作室实例,移动 100 格远离另一个角色,你应该看到一个 定位器图标 出现在它的头顶上。
连接到事件
朋友定位器 模块暴露 事件 以便您在用户与定位器图标互动时介绍自定义行为。
确保你在 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(), -- 允许在工作室进行调试teleportToFriend = false, -- 防止图标单击/点击时传送})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("You clicked on locator icon for", player.DisplayName)end)进行 多客户端测试 并单击另一个角色的定位器标志。注意您的角色不会传送到该位置,事件触发以允许自定义处理图标单击。
自定义定位器 UI
如果默认风格不适合您的体验,您可以替换默认的虚拟形象肖像 UI 为自己的 UI。

要替换默认 UI:
在 StarterGui 容器内创建一个新实例。
创建一个名为 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)