Việc tìm kiếm bạn bè trong trải nghiệm có thể là một thách thức. Mô-đun FriendsLocator nhà phát triển cho phép người chơi dễ dàng tìm và dịch chuyển đến bạn bè của họ trong một nơi.
Cách sử dụng mô-đun
Cài đặt
Để sử dụng mô-đun FriendsLocator trong một trải nghiệm:
Từ menu Cửa sổ của Studio hoặc thanh công cụ Trang chủ, mở Toolbox và chọn tab Cửa hàng Người sáng tạo.

Đảm bảo rằng sắp xếp Mô hình được chọn, sau đó nhấp vào nút Xem Tất cả cho Thể loại.

Tìm và nhấp vào ô Gói.
Tìm mô-đun Vị trí bạn bè và nhấp vào nó, hoặc kéo và thả vào chế độ 3D.

Trong cửa sổ Khám phá, di chuyển toàn bộ mô hình FriendsLocator vào ReplicatedStorage. Khi chạy trải nghiệm, mô-đun sẽ bắt đầu hoạt động.
Kiểm tra trong Studio
Để kiểm tra mô-đun trong Studio, mô-đun FriendsLocator phải được chạy trong một mô phỏng đa khách hàng, vì sẽ không có bạn bè nào trong một bài kiểm tra chơi đơn.
Trong StarterPlayerScripts, tạo một LocalScript mới và đổi tên thành ConfigureFriendsLocator.

Dán mã sau vào tập lệnh ConfigureFriendsLocator mới. Cài đặt showAllPlayers trong hàm configure đảm bảo rằng các trình định vị được hiển thị cho tất cả người dùng trong khi kiểm tra trong Studio, nhưng không ở một nơi đã được công bố.
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Cho phép gỡ lỗi trong Studio})Từ mezzanine của Studio, bắt đầu một mô phỏng đa khách hàng với 2 khách hàng. Ba phiên bản mới của Studio sẽ mở; một máy chủ mô phỏng và hai khách hàng mô phỏng.

Vào một trong những phiên bản khách hàng của Studio, di chuyển một khoảng cách 100 studs xa khỏi nhân vật khác, và bạn nên thấy một biểu tượng định vị xuất hiện trên đầu của nó.

Kết nối đến sự kiện
Mô-đun FriendsLocator cung cấp sự kiện để bạn có thể giới thiệu các hành vi tùy chỉnh khi người dùng tương tác với một biểu tượng định vị.
Đảm bảo rằng bạn đã tạo tập lệnh ConfigureFriendsLocator được nêu trong thử nghiệm trong Studio.
Thêm dòng 8 và 11-13 vào tập lệnh:
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Cho phép gỡ lỗi trong StudioteleportToFriend = false, -- Ngăn dịch chuyển khi nhấp/chạm vào biểu tượng})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("Bạn đã nhấp vào biểu tượng định vị cho", player.DisplayName)end)Tiến hành một bài kiểm tra đa khách hàng và nhấp vào biểu tượng định vị của một nhân vật khác. Lưu ý rằng nhân vật của bạn không dịch chuyển đến vị trí đó, và sự kiện được kích hoạt để cho phép xử lý tùy chỉnh của các lần nhấp vào biểu tượng.
Giao diện định vị tùy chỉnh
Nếu kiểu mặc định không phù hợp với trải nghiệm của bạn, bạn có thể thay thế giao diện chân dung avatar mặc định bằng giao diện của riêng bạn.

Để thay thế giao diện mặc định:
Tạo một thể hiện ScreenGui mới bên trong container StarterGui.

Tạo một thể hiện Frame có tên FriendLocator làm con của ScreenGui mới, sau đó thêm các phần tử như ImageLabels, TextLabels để thiết kế giao diện tùy chỉnh của bạn.

Khi hoàn thành, tắt ScreenGui chính để mô-đun không hiển thị giao diện định vị tùy chỉnh cho đến khi cần.

(Tùy chọn) Nếu bạn muốn hình ảnh chân dung avatar của bạn bè và DisplayName hiển thị ở đâu đó trong giao diện tùy chỉnh, bạn có thể đặt các thể hiện sau vào bên trong khung FriendLocator.
- Một ImageLabel có tên Portrait.
- Một TextLabel có tên DisplayName.

Mô-đun sẽ tìm kiếm những mục này và hiển thị hình ảnh chân dung avatar của bạn bè và/hoặc tên hiển thị tương ứng.
Tham chiếu API
Các hàm
configure
configure(config: table)
Ghi đè các tùy chọn cấu hình mặc định thông qua các khóa/giá trị sau trong bảng config.
| Khóa | Mô tả | Mặc định |
|---|---|---|
| alwaysOnTop | Nếu là true, hiển thị các biểu tượng định vị trên tất cả mọi thứ, ngăn cản chúng bị chặn bởi các đối tượng 3D trong thế giới. | true |
| showAllPlayers | Nếu là true, hiển thị vị trí cho tất cả người chơi, không chỉ bạn bè; điều này có thể giúp xác nhận chức năng của mô-đun trong Studio. | false |
| teleportToFriend | Dịch chuyển nhân vật người chơi đến vị trí của bạn bè khi biểu tượng định vị của họ được nhấp hoặc chạm. | true |
| thresholdDistance | Ngưỡng khoảng cách camera tại đó các biểu tượng định vị xuất hiện; những người bạn gần hơn khoảng cách này sẽ không hiển thị biểu tượng. | 100 |
| maxLocators | Số lượng biểu tượng định vị tối đa được hiển thị trong bất kỳ thời điểm nào. | 10 |
LocalScript - ConfigureFriendsLocatorlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({alwaysOnTop = true,showAllPlayers = false,teleportToFriend = true,thresholdDistance = 100,maxLocators = 10})
Sự kiện
clicked
Bắn ra khi một biểu tượng định vị được nhấp/kích hoạt bởi người chơi địa phương. Sự kiện này chỉ có thể được kết nối trong một LocalScript.
| Tham số | |
|---|---|
| player: Player | Người chơi mà biểu tượng định vị thuộc về. |
| playerCFrame: CFrame | CFrame của Humanoid.RootPart của người chơi mà biểu tượng định vị thuộc về. |
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)
-- Yêu cầu phát trực tuyến xung quanh vị trí mục tiêu
if Workspace.StreamingEnabled then
local success, errorMessage = pcall(function()
localPlayer:RequestStreamAroundAsync(playerCFrame.Position)
end)
if not success then
print(errorMessage)
end
end
print("Bạn đã nhấp vào biểu tượng định vị cho", player.DisplayName, "tại vị trí", playerCFrame.Position)
end)
visibilityChanged
Bắn ra khi một biểu tượng định vị được hiển thị/ẩn trên màn hình của người chơi địa phương. Sự kiện này chỉ có thể được kết nối trong một LocalScript.
| Tham số | |
|---|---|
| player: Player | Đối tượng Player mà biểu tượng định vị thuộc về. |
| playerCFrame: CFrame | CFrame của Humanoid.RootPart của người chơi mà biểu tượng định vị thuộc về. |
| isVisible: boolean | Liệu biểu tượng định vị hiện đang hiển thị trên màn hình của người chơi địa phương. Lưu ý rằng điều này vẫn sẽ là true nếu alwaysOnTop là false và biểu tượng định vị được hiển thị phía sau một đối tượng trong thế giới 3D. |
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
FriendsLocator.visibilityChanged:Connect(function(player, playerCFrame, isVisible)
print("Tính khả thi của biểu tượng định vị cho", player.DisplayName, ":", isVisible)
end)