ตัวค้นหาเพื่อน

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

อาจเป็นเรื่องท้าทายในการค้นหาเพื่อนในประสบการณ์โมดูลนักค้นหาเพื่อน FriendsLocator ช่วยให้ผู้เล่นค้นหาและเทเลพอร์ตไปยังเพื่อนของพวกเขาภายในสถานที่ได้ง่าย

การใช้งานโมดูล

การติดตั้ง

เพื่อใช้โมดูล FriendsLocator ในประสบการณ์:

  1. จากแท็บ ดู เปิด กล่องเครื่องมือ และเลือกแท็บ ร้านค้าผู้สร้าง

    Toolbox toggle button in Studio
  2. ตรวจสอบให้แน่ใจว่าการจัดเรียง รูปแบบ ถูกเลือกแล้วคลิกที่ปุ่ม ดูทั้งหมด สำหรับ หมวดหมู่

  3. ค้นหาและคลิกที่แท็บ โมดูลพัฒนา

  4. ค้นหาโมดูล ตัวค้นหาเพื่อน และคลิกหรือวางลงในมุมมอง 3D

  5. ในหน้าต่าง สํารวจ เคลื่อนย้ายแบบจำลองทั้งหมดของ FriendsLocator ไปยัง ServerScriptService เมื่อเรียกใช้ประสบการณ์แล้ว โมดูลจะแจกจ่ายตัวเองไปยังบริการต่างๆ และเริ่มทำงาน

ทดสอบในสตูดิโอ

เพื่อทดสอบโมดูลใน Studio โมดูล FriendsLocator จะต้องดำเนินการในการจำลองหลายไคลเอนต์เนื่องจากไม่มีเพื่อนจะปรากฏในการทดสอบเล่นเดี่ยว

  1. ใน StarterPlayerScripts สร้างใหม่ 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(), -- อนุญาตให้แก้ไขข้อผิดพลาดใน Studio
    })
  3. จากแท็บ ทดสอบ ของแถบเครื่องมือ เลือกความผสมผสานต่อไปนี้สำหรับ ไคลเอนต์และเซิร์ฟเวอร์ จากนั้นคลิกปุ่ม เริ่ม จะมีสามตัวอย่างใหม่ของ Studio เปิด; หนึ่งเซิร์ฟเวอร์จำลองและสองไคลเอนต์จำลอง

  4. ไปยังหนึ่งในตัวอย่างของ สตูดิโอ ลูกค้า เคลื่อนระยะทาง 100 สตัดไปจากตัวละครอื่น และคุณควรเห็น ไอคอนตําแหน่ง ปรากฏบนหัวของมัน

เชื่อมต่อกับอีเวนต์

โมดูล FriendsLocator เปิดเผย เหตุการณ์ เพื่อให้คุณสามารถแนะนำพฤติกรรมที่กำหนดเองเมื่อผู้ใช้โต้ตอบกับไอคอนตําแหน่ง

  1. ตรวจสอบให้แน่ใจว่าคุณได้สร้างสคริปต์ กำหนดตัวเลือกเพื่อน ที่อธิบายไว้ใน การทดสอบในสตูดิโอ

  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(), -- อนุญาตให้แก้ไขข้อผิดพลาดใน Studio
    teleportToFriend = false, -- ป้องกันการเทเลพอร์ตเมื่อคลิก/แตะไอคอน
    })
    FriendsLocator.clicked:Connect(function(player, playerCFrame)
    print("You clicked on locator icon for", player.DisplayName)
    end)
  3. ทำการทดสอบ หลายไคลเอนต์ และคลิกที่ไอคอนตําแหน่งของตัวละครอื่นสังเกตว่าตัวละครของคุณไม่ได้เทเลพอร์ตไปยังตำแหน่งนั้น และการเรียกการเหตุการณ์จะเปิดใช้งานเพื่ออนุญาตให้มีการจัดการไอคอนแบบกำหนดเอง

อินเทอร์เฟซผู้ใช้ตำแหน่งที่กำหนดเอง

หากสไตล์เริ่มต้นไม่เหมาะกับประสบการณ์ของคุณ คุณสามารถแทนที่ UI พอร์ตรีตอวาตาร์เริ่มต้นด้วย UI ของคุณเองได้

เพื่อแทนที่ UI เริ่มต้น:

  1. สร้างตัวอย่างใหม่ ScreenGui ภายในคอนเทนเนอร์ StarterGui

  2. สร้างตัวอย่าง Frame ชื่อ FriendLocator เป็นลูกของใหม่ ScreenGui จากนั้นเพิ่มองค์ประกอบเช่น ImageLabels , TextLabels เพื่อออกแบบ UI ที่กำหนดเองของคุณ

  3. เมื่อเสร็จสิ้นแล้ว ปิดการใช้งาน พ่อ ScreenGui เพื่อให้โมดูลไม่แสดง UI ตัวระบุที่กำหนดเองจนกว่าจะจำเป็น

  4. (ตัวเลือก) หากคุณต้องการภาพวาดอวตารของเพื่อนและ 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: 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 วัตถุที่ไอคอนตําแหน่งเป็นส่วนหนึ่ง
ผู้เล่น CFrame: CFrameCFrame ของผู้เล่น 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)