อาจเป็นเรื่องยากที่จะค้นหาเพื่อนในประสบการณ์ เครื่องมือ เพื่อนLocator โมดูลผู้พัฒนา ช่วยให้ผู้เล่นสามารถค้นหาและเทเลพอร์ตไปยังเพื่อนของพวกเขาภายในสถานที่ได้
การใช้งานโมดูล
การติดตั้ง
เพื่อใช้โมดูล FriendsLocator ในประสบการณ์:
จากแท็บ ดู เปิด กล่องเครื่องมือ และเลือกแท็บ ร้านค้าผู้สร้าง
ให้แน่ใจว่า รุ่น การเรียงลำดับเลือกแล้วคลิกปุ่ม ดูทั้งหมด สําหรับ หมวดหมู่
ค้นหาและคลิกที่ โมดูลการพัฒนา รายการ
ค้นหาโมดูล เพื่อนค้นหา และคลิกหรือลากไปยัง 3D มุมมอง
ใน หน้าต่าง Explorer ให้ย้ายรุ่น FriendsLocator ทั้งหมดไปยัง ServerScriptService เมื่อเริ่มใช้ประสบการณ์จะเริ่มแผนการและเริ่มทำงาน
การทดสอบใน Studio
เพื่อทดสอบโมดูลใน Studio โมดูล FriendsLocator จะต้องดำเนินการในการจำลองผู้ใช้หลายตัว เนื่องจากไม่มีเพื่อนในเกมส์เดี่ยว
ใน StarterPlayerScripts สร้าง LocalScript ใหม่และเปลี่ยนชื่อมันใหม่ว่า ConfigureFriendsLocator
วางรหัสต่อไปนี้ในสคริปต์ใหม่ จัดเตรียมเพื่อนโลเจ็ตเตอร์ เมื่อใดก็ตามที่คุณกำหนด showAllPlayers ตั้งค่าภายในฟังก์ชัน จัดเตรียม จะให้รหัสเครื่องหมายที่ป
LocalScript - กำหนดตำแหน่งเพื่อนlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- สามารถดีบั๊กใน Studio})จากแท็บ ทดสอบ เลือกคู่ต่อไปนี้สำหรับ ลูกค้าและเซิร์ฟเวอร์ แล้วคลิกปุ่ม เริ่ม ปุ่มสี่ครั้งใหม่จะเปิด; หนึ่งเซิร์ฟเวอร์จำลองและสองลูกค้าจำลอง
ไปที่หนึ่งใน คลายเคลื่อน สตูดิโอ อินสแตนซ์ หน้าอาคารของตัวละครอื่น และคุณควรเห็น ไอคอนโลเคเตอร์ ปรากฏขึ้นเหนือหัวของมัน
การเชื่อมต่อกับเหตุการณ์
โมดูล FriendsLocator เปิดเผย เหตุการณ์ เพื่อให้คุณสามารถแนะนำพฤติกรรมที่กำหนดเองเมื่อผู้ใช้ใช้ไอคอนตัวชี้นำทาง
ให้แน่ใจว่าคุณได้สร้างสคริปต์ ConfigureFriendsLocator ที่ระบุใน การทดสอบใน Studio
เพิ่มสาย 8 และ 11-13 ในสคริปต์:
LocalScript - กำหนดตำแหน่งเพื่อน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 ของคุณเองได้
เพื่อแทนที่ UI เริ่มต้น:
สร้าง ScreenGui ตัวอย่างใหม่ภายใน StarterGui คอนเทนเนอร์
เมื่อเสร็จสิ้น, ปิด แม่ของมัน ScreenGui เพื่อให้โมดูลไม่แสดง UI ตำแหน่งที่กำหนดเองจนกว่าจะต้องการ
(ตัวเลือก) หากคุณต้องการรูปปั้นอวาตาร์ของเพื่อนและ DisplayName ในแสดงผลที่ใดที่หนึ่งใน UI ที่กําหนดเองคุณสามารถวางตัวอย่างต่อไปนี้ใน เค้าโครง ของเพื่อ
- Class.ImageLabel ของชื่อว่า Portrait .
- A TextLabel ของชื่อ DisplayName
โมดูลจะมองหารายการเหล่านี้และแสดงภาพเลียนแบบของเพื่อนและ/หรือแสดงชื่อเรื่องตามลำดับ
อ้างอิง เอกสารอ้างอิงเกี่ยวกับ API
ฟังก์ชัน
กำหนดค่า
เปลี่ยนตั้งค่าการกำหนดค่าเริ่มต้นผ่านคีย์/ค่าต่อไปนี้ในตาราง config
กุญแจ | คำอธิบาย | เริ่มต้น |
---|---|---|
alwaysOnTop | หาก true แสดงไอคอนตำแหน่งบนหน้าจอที่สูงกว่าทุกอย่าง ป้องกันพวกเขาจากการถูกบล็อกโดยวัตถุ 3D เหล่านาน | จริง |
showAllPlayers | หาก true แสดงตำแหน่งสำหรับผู้เล่นทั้งหมดไม่ใช่เพียงเพื่อน; นี่สามารถช่วยให้ตรวจสอบความสามารถของโมดูลใน Studio | ปลอม |
teleportToFriend | เริ่มต้นส่งตัวละครผู้เล่นไปยังตำแหน่งเพื่อนของพวกเขาเมื่อไอคอนตำแหน่งของพวกเขาถูกคลิกหรือแตะ | จริง |
thresholdDistance | ระยะกล้องที่ตรงกับขีดจำกัดระยะทางที่ผู้ใช้ใกล้ที่สุดจะไม่แสดงไอคอน เพื่อนที่อยู่ใกล้กับระยะนี้จะไม่แสดงไอคอน | 100 |
maxLocators | จำนวนสูงสุดของไอคอนตำแหน่งที่แสดงในเวลาใด ๆ | 10 |
LocalScript - กำหนดตำแหน่งเพื่อน
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 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 | ว่าไอคอนตำแหน่งจะปรากฏอยู่บนหน้าจอผู้เล่นในขณะนี้หรือไม่ หมายเหตุว่านี่จะยังคงเป็น true ถ้า alwaysOnTop เป็น false และไอคอนเรนเดอร์จะปรากฏอยู่เบื้องห |
สคริปต์ท้องถิ่น
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)