อาจเป็นเรื่องท้าทายในการค้นหาเพื่อนในประสบการณ์โมดูลนักค้นหาเพื่อน FriendsLocator ช่วยให้ผู้เล่นค้นหาและเทเลพอร์ตไปยังเพื่อนของพวกเขาภายในสถานที่ได้ง่าย
การใช้งานโมดูล
การติดตั้ง
เพื่อใช้โมดูล FriendsLocator ในประสบการณ์:
ตรวจสอบให้แน่ใจว่าการจัดเรียง รูปแบบ ถูกเลือกแล้วคลิกที่ปุ่ม ดูทั้งหมด สำหรับ หมวดหมู่
ค้นหาและคลิกที่แท็บ โมดูลพัฒนา
ค้นหาโมดูล ตัวค้นหาเพื่อน และคลิกหรือวางลงในมุมมอง 3D
ในหน้าต่าง สํารวจ เคลื่อนย้ายแบบจำลองทั้งหมดของ FriendsLocator ไปยัง ServerScriptService เมื่อเรียกใช้ประสบการณ์แล้ว โมดูลจะแจกจ่ายตัวเองไปยังบริการต่างๆ และเริ่มทำงาน
ทดสอบในสตูดิโอ
เพื่อทดสอบโมดูลใน Studio โมดูล FriendsLocator จะต้องดำเนินการในการจำลองหลายไคลเอนต์เนื่องจากไม่มีเพื่อนจะปรากฏในการทดสอบเล่นเดี่ยว
ใน StarterPlayerScripts สร้างใหม่ 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})จากแท็บ ทดสอบ ของแถบเครื่องมือ เลือกความผสมผสานต่อไปนี้สำหรับ ไคลเอนต์และเซิร์ฟเวอร์ จากนั้นคลิกปุ่ม เริ่ม จะมีสามตัวอย่างใหม่ของ Studio เปิด; หนึ่งเซิร์ฟเวอร์จำลองและสองไคลเอนต์จำลอง
ไปยังหนึ่งในตัวอย่างของ สตูดิโอ ลูกค้า เคลื่อนระยะทาง 100 สตัดไปจากตัวละครอื่น และคุณควรเห็น ไอคอนตําแหน่ง ปรากฏบนหัวของมัน
เชื่อมต่อกับอีเวนต์
โมดูล FriendsLocator เปิดเผย เหตุการณ์ เพื่อให้คุณสามารถแนะนำพฤติกรรมที่กำหนดเองเมื่อผู้ใช้โต้ตอบกับไอคอนตําแหน่ง
ตรวจสอบให้แน่ใจว่าคุณได้สร้างสคริปต์ กำหนดตัวเลือกเพื่อน ที่อธิบายไว้ใน การทดสอบในสตูดิโอ
เพิ่มบรรทัด 8 และ 11-13 ในสคริปต์:
สคริปท้องถิ่น - กำหนดค่าตัวค้นหาเพื่อนlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- อนุญาตให้แก้ไขข้อผิดพลาดใน StudioteleportToFriend = false, -- ป้องกันการเทเลพอร์ตเมื่อคลิก/แตะไอคอน})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("You clicked on locator icon for", player.DisplayName)end)ทำการทดสอบ หลายไคลเอนต์ และคลิกที่ไอคอนตําแหน่งของตัวละครอื่นสังเกตว่าตัวละครของคุณไม่ได้เทเลพอร์ตไปยังตำแหน่งนั้น และการเรียกการเหตุการณ์จะเปิดใช้งานเพื่ออนุญาตให้มีการจัดการไอคอนแบบกำหนดเอง
อินเทอร์เฟซผู้ใช้ตำแหน่งที่กำหนดเอง
หากสไตล์เริ่มต้นไม่เหมาะกับประสบการณ์ของคุณ คุณสามารถแทนที่ UI พอร์ตรีตอวาตาร์เริ่มต้นด้วย UI ของคุณเองได้

เพื่อแทนที่ UI เริ่มต้น:
สร้างตัวอย่างใหม่ ScreenGui ภายในคอนเทนเนอร์ StarterGui
สร้างตัวอย่าง Frame ชื่อ FriendLocator เป็นลูกของใหม่ ScreenGui จากนั้นเพิ่มองค์ประกอบเช่น ImageLabels , TextLabels เพื่อออกแบบ UI ที่กำหนดเองของคุณ
เมื่อเสร็จสิ้นแล้ว ปิดการใช้งาน พ่อ ScreenGui เพื่อให้โมดูลไม่แสดง UI ตัวระบุที่กำหนดเองจนกว่าจะจำเป็น
(ตัวเลือก) หากคุณต้องการภาพวาดอวตารของเพื่อนและ DisplayName เพื่อแสดงบางที่ใน UI ที่กำหนดเองคุณสามารถวางตัวอย่างต่อไปนี้ภายในกรอบ ค้นหาเพื่อน
- An ImageLabel ของชื่อ ภาพวาด .
- A TextLabel ของชื่อ DisplayName .
โมดูลจะค้นหารายการเหล่านี้และแสดงภาพวาร์ปของเพื่อนและ/หรือชื่อแสดงตัวตนของเพื่อนตามลำดับ
การอ้างอิง 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 วัตถุที่ไอคอนตําแหน่งเป็นส่วนหนึ่ง |
ผู้เล่น CFrame: CFrame | CFrame ของผู้เล่น Humanoid.RootPart ที่ไอคอนตําแหน่งเป็นของ |
เป็นที่มองเห็น: boolean | ว่าไอคอนตําแหน่งปัจจุบันมีความเห็นบนหน้าจอของผู้เล่นท้องถิ่นหรือไม่โปรดทราบว่านี่จะยังคงเป็น true ถ้า alwaysOnTop เป็น false และตัวระบุจะแสดงหลังวัตถุในโลก 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)