การ ล่าสัตว์นักสำรวจ โมดูลนักพัฒนา ให้ผู้เล่นมีวิธีที่มีอยู่แล้วในการสำรวจประสบการณ์ของคุณโดยการแนะนำพวกเขาไปยังสถานที่ทั้งหมดอย่างอินทรีย์ความคืบหน้าของผู้เล่นยังคงอยู่ ดังนั้นการล่าสัตว์ล่าสัตว์จึงสามารถดำเนินต่อไปได้ในระหว่างเซสชัน
การใช้งานโมดูล
การติดตั้ง
เพื่อใช้โมดูล การล่าสัตว์ป่า ในประสบการณ์:
ตรวจสอบให้แน่ใจว่าการจัดเรียง รูปแบบ ถูกเลือกแล้วคลิกที่ปุ่ม ดูทั้งหมด สำหรับ หมวดหมู่
ค้นหาและคลิกที่แท็บ โมดูลพัฒนา
ค้นหาโมดูล การล่าขุมทรัพย์ และคลิกหรือวางลงในมุมมอง 3D
ในหน้าต่าง สํารวจ เคลื่อนย้ายแบบจำลองทั้งหมดของ ล่าสัตว์นักสำรวจ ไปยัง ServerScriptService เมื่อเรียกใช้ประสบการณ์แล้ว โมดูลจะแจกจ่ายตัวเองไปยังบริการต่างๆ และเริ่มทำงาน
ใช้โทเค็น
โมดูลการล่าสัตว์ขยะใช้ โทเค็น เป็นรายการที่ผู้เล่นค้นหาและรวบรวมโมดูลมาพร้อมกับโมเดลโทเค็นหนึ่งที่คุณสามารถตำแหน่งในโลก 3D ได้
ค้นหาเมช Token1 ภายในโฟลเดอร์ พื้นที่ทำงาน ของโฟลเดอร์หลักของโมดูล
ย้าย โทเค็น 1 ไปยังชั้นสูงสุดของ พื้นที่ทำงาน และตำแหน่งที่ต้องการ
ให้ชื่อที่ไม่ซ้ำกันแก่โทเค็น ; ชื่อนี้เป็นวิธีที่โมดูลติดตามโทเค็นที่ผู้เล่นแต่ละคนได้รวบรวม
เพื่อเพิ่มโทเค็นเพิ่มเติม ทำซ้ำโทเค็นที่มีอยู่แล้วและให้ชื่อที่ไม่ซ้ำกัน
หากคุณไม่ต้องการใช้โทเค็นเน็ตเวิร์กแบบบรรจุ ใดๆ Model หรือ BasePart จะทำงานได้ตราบใดที่ตรงกับเกณฑ์ต่อไปนี้:
วัตถุมีแท็ก CollectionService ของ ScavengerHuntPart .หากต้องการ ชื่อแท็ก CollectionService ที่ใช้โดยโมดูลสามารถเปลี่ยนได้โดยการตั้งค่าค่าที่แตกต่างสำหรับ tokenTag ในการเรียก กำหนดค่าเซิร์ฟเวอร์
วัตถุมีตัวอย่างลูก StringValue ที่ตั้งค่าเป็น "flavor text" เพื่อแสดงเมื่อรวบรวมโทเค็น
รูปแบบ ส่วนตาข่าย
ใช้ภูมิภาค
ภูมิภาคแตกต่างจากโทเค็นเล็กน้อยเนื่องจากพื้นที่ขนาดใหญ่ที่ถูกบอกว่า "รวบรวม" เมื่อผู้เล่นเข้าสู่พวกเขานอกจากนี้เมื่อผู้เล่นออกจากภูมิภาค ข้อความรสชาติจะถูกปิดการใช้งานโดยอัตโนมัติและภูมิภาคเองจะถูกลบออกจากพื้นที่ทํางาน
สร้างส่วนที่ติดอยู่รอบภูมิภาค เช่น บล็อกหรือทรงกลมโมดูลจะปิดใช้งานคุณสมบัติ CanCollide โดยอัตโนมัติในระหว่างการทำงานดังนั้นผู้เล่นจะไม่ชนกับภูมิภาคทางกายภาพ
ให้ชื่อที่ไม่ซ้ำกัน แก่มัน ชื่อนี้เป็นวิธีที่โมดูลติดตามว่าแต่ละผู้เล่นได้เข้าสู่ภูมิภาคใด
โดยใช้ส่วน แท็ก ของคุณสมบัติของชิ้นส่วนหรือแท็ก เอเดอร์แท็กของ Studio ใช้แท็ก ScavengerHuntPart กับชิ้นส่วนเพื่อให้ CollectionService ตรวจพบหากต้องการ ชื่อแท็กที่ใช้โดยโมดูลสามารถเปลี่ยนได้โดยการตั้งค่าค่าที่แตกต่างสำหรับ tokenTag ในการเรียก กำหนดค่าเซิร์ฟเวอร์
รวมตัวอย่างเด็ก StringValue ที่กำหนดเป็น "flavor text" เพื่อแสดงเมื่อภูมิภาคถูกใส่
การกำหนดค่า
โมดูลจะได้รับการกำหนดค่าล่วงหน้าเพื่อทำงานสำหรับกรณีการใช้งานส่วนใหญ่ แต่สามารถปรับแต่งได้ง่ายตัวอย่างเช่นเพื่อเปลี่ยนความเร็วในการหมุนโทเค็นและปรับแต่งข้อความข้อมูลโมดัล:
ใน StarterPlayerScripts สร้างใหม่ LocalScript และเปลี่ยนชื่อเป็น กำหนดการล่าขุมทรัพย์ 2. ใส่โค้ดต่อไปนี้ลงในสคริปต์ใหม่
สคริปท้องถิ่น - กำหนดการตามล่าสมบัติlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureClient({infoModalText = "Welcome to my Scavenger Hunt!",completeModalText = "Thanks for playing my Scavenger Hunt!",tokenRotationSpeed = 60,})
อีเวนต์คอลเลกชัน
ทุกครั้งที่ผู้เล่นรวบรวมโทเค็นหรือเข้าสู่ภูมิภาค การเหตุการณ์ ที่รวบรวม จะเกิดขึ้นคุณสามารถฟังเหตุการณ์นี้จากฝั่งเซิร์ฟเวอร์ Script และตอบสนองตามนั้นฟังก์ชันที่เชื่อมต่อได้รับ Player ที่ชนกับโทเค็นหรือเข้าสู่ภูมิภาคและชื่อโทเค็นหรือภูมิภาคนั้น
เช่นเดียวกับเมื่อผู้เล่นรวบรวม ทั้งหมด โทเค็นหรือเข้าสู่ภูมิภาคที่มีแท็ก ทั้งหมด ติดอยู่ อีเวนต์ ทั้งหมดที่รวบรวม จะเกิดขึ้นและฟังก์ชันที่เชื่อมต่อได้รับ Player ที่เกี่ยวข้องฟังก์ชันนี้จะถูกเรียกเพียงครั้งเดียวต่อผู้เล่นและสามารถใช้เพื่อรางวัลผู้เล่นด้วยตรา แย่ การเข้าถึงพื้นที่ใหม่ เงินในประสบการณ์ ฯลฯ
สคริปต์
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName)
print(player.DisplayName, itemName)
end)
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
กุยที่กำหนดเอง
โมดูลนี้เปิดเผยตัวเลือกหลายอย่างเพื่อปรับแต่ง GUI เริ่มต้น แต่คุณสามารถเลือกที่จะแสดงองค์ประกอบ GUI ที่กําหนดเองแทนได้
เมื่อ useCustomModals ถูกตั้งค่าเป็น true ในฟังก์ชัน configureClient อีเวนต์ showInfoModal จะเกิดขึ้นทุกครั้งที่ผู้เล่นเปิดใช้งานตัวติดตามโทเค็นเช่นเดียวกับนั้น การแสดงเหตุการณ์ showCompleteModal จะเกิดขึ้นเมื่อผู้เล่นได้รวบรวมทุกอย่างในการล่าสมบัติทั้งสองเหตุการณ์นี้สามารถฟังได้ใน LocalScript
สคริปท์ท้องถิ่น
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- แสดงโมดัลข้อมูลที่กำหนดเอง
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- แสดงโมดัลที่สมบูรณ์แบบแบบกำหนดเอง
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)
การมองเห็น GUI
โดยค่าเริ่มต้น, การโจมตีของนักล่าจะซ่อนทั้งหมด ScreenGuis และ CoreGuis (ยกเว้นรายชื่อผู้เล่น) เมื่อโมดัลข้อมูลหรือโมดัลการสําเร็จปรากฏหากคุณต้องการยกเลิกพฤติกรรมการซ่อนอัตโนมัตินี้และตัดสินใจโดยเป็นระบบว่า GUI ใดที่ควรยังคงมองเห็นได้ รวมถึงการโทรกลับ hideOtherGuis และ showOtherGuis และตอบสนองด้วยโลจิสติกของคุณเอง
สคริปท์ท้องถิ่น
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- สร้าง GUI หน้าจอที่จะไม่ถูกซ่อน
local specialGuiInstance = Instance.new("ScreenGui")
-- วาด GUI หน้าจอด้านบนของ GUI การล่าสัตว์ขยะ
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- เพิ่มฉลากข้อความให้กับ GUI
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Remains visible when displaying modals"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
ScavengerHunt.hideOtherGuis(function()
-- ซ่อน GUI หน้าจอทั้งหมดที่กำหนดโดยนักพัฒนา
local instances = playerGui:GetChildren()
for _, instance in instances do
if instance:IsA("ScreenGui") and not instance.Name == "ScavengerHunt" and instance.Enabled then
instance.Enabled = false
table.insert(hiddenInstances, instance)
end
end
-- ซ่อน GUI หลักเฉพาะ
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- แสดง GUI หน้าจอทั้งหมดที่กำหนดโดยผู้พัฒนาที่ซ่อนอยู่
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- แสดง GUI หลักที่ซ่อนไว้
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
การอ้างอิง API
ฟังก์ชัน
กำหนดค่าไคลเอนต์
กำหนดค่าไคลเอนต์ (config: table )
ยกเลิกตัวเลือกการกำหนดค่าด้านลูกค้าเริ่มต้นผ่านตัวแปรหลัก/ค่าต่อไปนี้ในตาราง configฟังก์ชันนี้สามารถโทรได้เฉพาะจาก LocalScript
กุญแจ | คําอธิบาย | ค่าเริ่มต้น |
---|---|---|
autoDismissTime | เวลาในวินาทีก่อนที่โมดัลจะปิดตัวเองโดยอัตโนมัติหรือนําทางไปยังหน้าต่อไปถ้ามีหนึ่ง ตั้งค่าเป็น 0 ปิดใช้งาน | 20 |
closeModalGamepad | ปุ่มเกมแพดใช้เพื่อปิดโมดัล ( Enum.KeyCode ). | ButtonA |
closeModalKeyboard | แป้นพิมพ์ที่ใช้เพื่อปิดโมดัล ( Enum.KeyCode ) | E |
completeModalText | ข้อความที่จะแสดงบนโมดัลที่ปรากฏหลังจากคลิกติดตามโทเค็นเมื่อการล่าสัตว์เสร็จสิ้น | ขอบคุณที่เข้าร่วม!" |
infoModalText | ข้อความที่จะแสดงในโมดัลที่ปรากฏหลังจากคลิกตัวติดตามโทเค็น | “ค้นหาโทเค็นทั้งหมดเพื่อสําเร็จการล่า” |
tokenRotationSpeed | ความเร็วที่โทเค็นหมุนในรอบต่อวินาที ตั้งค่าเป็น 0 เพื่อป้องกันการหมุน | 20 |
nextArrowImage | ภาพที่ใช้เพื่อระบุว่ามีหน้าโมดัลเพิ่มเติมที่จะแสดงหลังหน้าโมดัลปัจจุบัน | “rbxassetid://8167172095” |
openTokenTrackerGamepad | ปุ่มบนแท็บเล็ตใช้เพื่อแสดงโมดัลที่ปรากฏหลังจากเปิดใช้งานตัวติดตามโทเค็น ( Enum.KeyCode ) | ButtonY |
openTokenTrackerKeyboard | แป้นพิมพ์ที่ใช้แสดงโมดัลที่ปรากฏหลังจากเปิดใช้งานตัวติดตามโทเค็น ( Enum.KeyCode ) | Y |
openTokenTrackerGamepadButtonImage | ภาพสำหรับปุ่มเกมแพดที่ใช้เพื่อเปิดใช้งานตัวติดตามโทเค็น | “rbxassetid://8025860488” |
regionIcon | ไอคอนที่จะแสดงข้างกับตัวติดตามโทเค็นเมื่อเข้าสู่ภูมิภาค | “rbxassetid://8073794624” |
tokenIcon | ไอคอนที่จะแสดงข้างกับตัวติดตามโทเค็นเมื่อรวบรวมโทเค็น | “rbxassetid://8073794477” |
tokenTrackerPositionSmallDevice | ตำแหน่งของอินเทอร์เฟซผู้ติดตามโทเค็นบนอุปกรณ์ขนาดเล็กเช่นโทรศัพท์ ( UDim2 ) | (1, 0, 0, 84) |
tokenTrackerPositionLargeDevice | ตำแหน่งของ UI ติดตามตัวเลขโทเค็นบนอุปกรณ์ขนาดใหญ่เช่นแท็บเล็ตและพีซี ( UDim2 ). | (1, 0, 1, -16) |
useRegions | แทนที่จะใช้ โทเค็น ให้ใช้ ภูมิภาค | ปิด |
สคริปท์ท้องถิ่น
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureClient({infoModalText = "Welcome to my Scavenger Hunt!",completeModalText = "Thanks for playing my Scavenger Hunt!",tokenRotationSpeed = 60,navigationBeam = {lightEmission = 1},modal = {textSize = 14},})
กำหนดค่าเซิร์ฟเวอร์
กำหนดค่าเซิร์ฟเวอร์(config: table )
ยกเลิกตัวเลือกการกำหนดค่าด้านเซิร์ฟเวอร์เริ่มต้นผ่านคีย์/ค่าต่อไปนี้ในตาราง configฟังก์ชันนี้สามารถโทรได้เฉพาะจาก Script
กุญแจ | คําอธิบาย | ค่าเริ่มต้น |
---|---|---|
tokenTag | แท็กที่ใช้โดย CollectionService เพื่อค้นหาโทเค็นหรือภูมิภาคทั้งหมดที่ใช้ในการล่าสัตว์ | ส่วนล่าสัตว์เลียนแบบ" |
datastoreName | ชื่อของ DataStore ที่ใช้โดยการล่าสัตว์เพื่อเก็บความคืบหน้าการรวบรวมของผู้เล่นแต่ละคน | “โทเค็นการล่าสัตว์” |
resetOnPlayerRemoving | ถ้าเป็นจริง จะรีเซ็ตความคืบหน้าของผู้ใช้เมื่อพวกเขาออกจากประสบการณ์; สะดวกสำหรับการไม่บันทึกความคืบหน้าในขณะทดสอบการล่าสมบัติ | ปิด |
สคริปต์
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureServer({tokenTag = "GreenGem",})
ปิดใช้งาน
ปิดใช้งาน()
ซ่อน UI ทั้งหมดสำหรับการล่าสัตว์ป่า, ตัดการเชื่อมต่อผู้ฟังเหตุการณ์ทั้งหมด, และป้องกันไม่ให้ผู้เล่นรวบรวมโทเค็นหรือโต้ตอบกับภูมิภาคฟังก์ชันนี้สามารถโทรได้เฉพาะจาก Script
สคริปต์
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.disable()
เปิดใช้งาน
เปิดใช้งาน()
แสดง UI ทั้งหมดสำหรับการล่าสัตว์เพื่อสะสม เชื่อมต่อผู้ฟังอีเวนต์การใส่ข้อมูลทั้งหมด และอนุญาตให้ผู้เล่นรวบรวมโทเค็นและโต้ตอบกับภูมิภาคฟังก์ชันนี้สามารถโทรได้เฉพาะจาก Script
สคริปต์
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.enable()
อีเวนต์
รวบรวมแล้ว
เกิดไฟไหม้เมื่อผู้เล่นชนกับโทเค็นหรือเข้าสู่ภูมิภาคฟังก์ชันที่เชื่อมต่อจะได้รับ Player ที่ชนกับโทเค็นหรือเข้าสู่ภูมิภาคและชื่อโทเค็นที่ชนกันหรือภูมิภาคที่เข้าสู่อีเวนต์นี้สามารถเชื่อมต่อได้เฉพาะใน Script
พารามิเตร | |
---|---|
ผู้เล่น: Player | ผู้ใช้ที่ชนกับโทเค็นหรือเข้าสู่ภูมิภาค |
ชื่อรายการ: string | ชื่อของโทเค็นที่ชนกันหรือภูมิภาคที่ถูกป้อน |
รวบรวมทั้งหมด: number | จํานวนโทเค็นทั้งหมดที่รวบรวมโดยผู้ใช้ที่แทนที่ด้วย player |
สคริปต์
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)
ทั้งหมดที่รวบรวม
จะเกิดไฟไหม้เมื่อผู้เล่นรวบรวมโทเค็นทั้งหมดหรือเข้าสู่ภูมิภาคทั้งหมดในการโจมตีของนักล่าฟังก์ชันที่เชื่อมต่อจะได้รับ Player ที่รวบรวมโทเค็นทั้งหมดและจะถูกยิงเพียงครั้งเดียวต่อผู้เล่นอีเวนต์นี้สามารถเชื่อมต่อได้เฉพาะใน Script
พารามิเตร | |
---|---|
ผู้เล่น: Player | ผู้เล่นที่รวบรวมโทเค็นทั้งหมดหรือเข้าสู่ภูมิภาคทั้งหมด |
สคริปต์
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
แสดงข้อมูลโมดัล
จะเกิดไฟไหม้เมื่อผู้เล่นคลิกที่ตัวติดตามโทเค็นเมื่อตัวเลือก useCustomModalsการกำหนดค่า ถูกตั้งค่าเป็น trueอีเวนต์นี้สามารถเชื่อมต่อได้เฉพาะใน LocalScript
สคริปท์ท้องถิ่น
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
local infoModal = Players.LocalPlayer.PlayerGui.InfoModal
infoModal.Enabled = true
end)
แสดงโมดัลสมบูรณ์
จะเกิดไฟไหม้เมื่อผู้เล่นคลิกที่ตัวติดตามโทเค็นเมื่อตัวเลือก useCustomModalsการกำหนดค่า ถูกตั้งค่าเป็น true และผู้เล่นได้รวบรวมโทเค็นทั้งหมดในการล่าสมบัติอีเวนต์นี้สามารถเชื่อมต่อได้เฉพาะใน LocalScript
สคริปท์ท้องถิ่น
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showCompleteModal:Connect(function()
local completeModal = Players.LocalPlayer.PlayerGui.CompleteModal
completeModal.Enabled = true
end)
การโทรกลับ
ซ่อน OtherGuis
ซ่อน OtherGuis(callback: function )
คอลเลกชันนี้เรียกกลับทันทีก่อนที่จะแสดงโมดัล ทำให้คุณสามารถปิดใช้งานทั้งหมด ScreenGuis หรือองค์ประกอบภายในโมดัลก่อนที่จะแสดงโมดัลดู การมองเห็น GUI สำหรับรายละเอียดและรหัสตัวอย่าง
แสดง OtherGuis
แสดง OtherGuis(callback: function )
คอลเลกชันนี้เรียกกลับทันทีหลังจากที่โมดัลถูกปิดใช้งาน ทำให้คุณสามารถเปิดใช้งานทั้งหมด ScreenGuis หรือองค์ประกอบภายในได้ดู การมองเห็น GUI สำหรับรายละเอียดและรหัสตัวอย่าง