ScavengerHuntโมดูลผู้พัฒนา สถานที่ความคืบหน้าของผู้เล่นคือตัวคงที่ดังนั้นการล่าสมบัติจึงสามา
การใช้งานโมดูล
การติดตั้ง
เพื่อใช้โมดูล ScavengerHunt ในประสบการณ์:
จากแท็บ ดู เปิด กล่องเครื่องมือ และเลือกแท็บ ร้านค้าผู้สร้าง
ให้แน่ใจว่า รุ่น การเรียงลำดับเลือกแล้วคลิกปุ่ม ดูทั้งหมด สําหรับ หมวดหมู่
ค้นหาและคลิกที่ โมดูลการพัฒนา รายการ
ค้นหาโมดูล ล่าสมบัติ และคลิกมันหรือลากลงในมุมมอง 3D
ใน หน้าต่าง Explorer ให้ย้ายรุ่น ScavengerHunt ทั้งหมดไปยัง ServerScriptService เมื่อเรียกใช้ประสบการณ์จะเริ่มต้นดำเนินการโดยหลายบริการและเริ่มดำเนินการ
ใช้โทเค็น
โมดูลตามล่าสมบัติใช้ โทเค็น เป็นรายการที่ผู้เล่นค้นหาและรวบรวม โมดูลมาพร้อมกับโมเดลโทเค็นหนึ่งที่คุณสามารถวางในโลก 3D
ค้นหา Token1 เมชภายใน โฟลเดอร์งานของโมดูล
ย้าย โทเค็น 1 เข้าสู่ระดับชั้นสูงสุดของ Workspace และตำแหน่งมันที่ต้องการ
ให้ตัวแทน ชื่อเฉพาะ ให้กับโทเค็นนี้ โดยชื่อนี้จะเป็นวิธีที่โมดูลติดตามว่าโทเค็นใดที่ผู้เล่นแต่ละคนได้รวบรวม
เพื่อเพิ่มโทเค็นเพิ่มเติมให้ซ้ำโทเค็นที่มีอยู่แล้วและให้ชื่อที่ไม่ซ้ำกัน
หากคุณไม่ต้องการใช้เมชทองคำที่รวมอยู่ในชุดรุ่น ใด ๆ ของ Model หรือ BasePart จะทำงานได้ตามที่ตรงตามข้อกำหนดต่อไปนี้:
วัตถุมีป้ายชื่อ CollectionService ของ ScavengerHuntPart หากต้องการ ชื่อ CollectionService ของโมดูลที่ใช้สามารถเปลี่ยนได้โดยการตั้งค่าค่าต่าง ๆ ใน
วัตถุมีตัวละคร StringValue ของตัวเองตั้งอยู่ใน "flavor เนื้อหา" เพื่อแสดงเมื่อเก็บตั๋ว
ใช้ภาค
ภาคดินแดนแตกต่างกันเล็กน้อยจากโทเค็นเมื่อพื้นที่ขนาดใหญ่ที่ถูกกำกับว่า "เก็บรวบรวม" เมื่อผู้เล่นเข้าสู่พื้นที่นั้น นอกจากนี้เมื่อผู้เล่นออกจากภาคดินแดนโรงงานจะปฏิเสธโมดัลข้อความรสช
สร้างส่วนหนึ่งที่แนบมัดอยู่รอบภูมิภาค เช่น บล็อกหรือลูกบาศก์ โมดูลจะปิดการใช้งานสมบัติของ CanCollide ในเวลาทำงานเพื่อให้ผู้เล่นไม่ได้สัมผัสกับภูมิภาค
ให้มัน ชื่อเฉพาะ นี้ ชื่อนี้คือวิธีที่โมดูลติดตามภายในแต่ละภูมิภาคที่ผู้เล่นแต่ละรายเข้าร่วม
โดยใช้ส่วน แท็ก ของโปรไฟล์ของส่วน หรือ Studio 의 แท็กเอเดอร์นัมเบอร์เนอร์ ให้ใช้แท็ก ScavengerHuntPart
รวมชุดตัวอย่าง StringValue ในโคลัสเซอร์เพื่อให้เป็น "รสชาติข้อความ" เมื่อภูมิภาคถูกเข้าสู่
การกำหนดค่า
โมดูลถูกกำหนดให้ทำงานสำหรับกรณีใช้งานส่วนใหญ่ แต่สามารถปรับแต่งได้ง่าย เช่นเพื่อเปลี่ยนความเร็วการหมุนของโทเค็นและปรับแต่งข้อความของโมดัล:
ใน StarterPlayerScripts สร้าง LocalScript ใหม่และเปลี่ยนชื่อมันเป็น ConfigureScavengerHunt 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 ด้านข้างเซิร์ฟเวอร์
เช่นเดียวกันเมื่อผู้เล่นรวบรวม ทั้งหมด โทเค็นหรือเข้าสู่ ทั้งหมด ภายในภาพหางเขต เหตุการณ์ ทั้งหมด
สคริป
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 เริ่มต้นของมัน แต่คุณสามารถเลือกที่จะแสดงรายการ GUI ที่กําหนดเองแทน
เมื่อ useCustomModals กำหนดไว้เป็น true ใน ใช้เครื่องมือการกำหนดตัวตน ฟังเหตุการณ์ 1> showInfoModal1> ทุก
สคริปต์ท้องถิ่น
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
โดยปกติ, การล่าสมบัติจะซ่อน all ScreenGuis และ CoreGuis (ยกเว้นสำหรับรายการผู้เล่น) เมื่อ popup ข้อ
สคริปต์ท้องถิ่น
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 หน้าจอข้างการแสวงหาสมบัติ
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
-- ซ่อน GUIs เฉพาะ
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- แสดง GUIs จอแสดงผลที่กำหนดโดยผู้พัฒนาทั้งหมดที่ซ่อนอยู่
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- แสดง GUIs เฉพาะที่ซ่อนอยู่
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
อ้างอิง เอกสารอ้างอิงเกี่ยวกับ API
ฟังก์ชัน
กำหนดค่าลูกค้า
เปลี่ยนการตั้งค่าด้านล่างของการกำหนดค่าของลูกค้าผ่านคีย์/ค่าต่อไปนี้ในตาราง config นี้ ฟังก์ชันนี้สามารถเรียกได้จาก LocalScript เท่านั้น
กุญแจ | คำอธิบาย | เริ่มต้น |
---|---|---|
autoDismissTime | เวลาในวินาทีก่อนที่โมดัลจะปิดตัวอัตโนมัติหรือนำทางไปยังหน้าต่างๆ หากมีหนึ่ง ตั้งค่าให้เป็น 0 เพื่อปิด | 20 |
closeModalGamepad | ปุ่มเกมพาดที่ใช้เพื่อปิดโมดัล ( Enum.KeyCode ) | ButtonA |
closeModalKeyboard | ปุ่มเคลียดที่ใช้ในการปิดโมดัล ( Enum.KeyCode ) | E |
completeModalText | ข้อความที่ปรากฏบนโมดัลที่ปรากฏหลังจากการล่าสมบัติเสร็จสิ้น | ขอบคุณสําหรับการมีส่วนร่วม! |
infoModalText | ข้อความที่แสดงบนโมดัลที่ปรากฏหลังจากการคลิกที่ตัวติดตามโทเค็น | “ค้นหาโทเค็นทั้งหมดเพื่อเสร็จสิ้นการล่า” |
tokenRotationSpeed | ความเร็วที่โทเค็นหมุนต่อวินาที ตั้งค่าให้เป็น 0 เพื่อป้องกันการหมุน | 20 |
nextArrowImage | ใช้รูปภาพเพื่อแสดงว่ามีหน้าโมดัลมากขึ้นหลังจากหน้าโมดัลปัจจุบัน | “รายละเอียด: rxbassetid://8167172095” |
openTokenTrackerGamepad | ปุ่มเกมพาดที่ใช้เพื่อแสดงโมดัลที่ปรากฏหลังจากการเปิดใช้งานตัวตรวจสอบโทเค็น ( Enum.KeyCode ) | ButtonY |
openTokenTrackerKeyboard | ปุ่มเครื่องมือใช้เพื่อแสดงโมดัลที่ปรากฏหลังจากเปิดใช้งานตัวตรวจสอบโทเค็น ( Enum.KeyCode ) | Y |
openTokenTrackerGamepadButtonImage | รูปภาพสำหรับปุ่มเกมพาดที่ใช้เพื่อเปิดเครื่องติดตามโทเค็น | “รายละเอียด: rxbassetid://8025860488” |
regionIcon | ไอคอนที่ปรากฏข้างกับตัวติดตามโทเค็นเมื่อเข้าสู่ภูมิภาค | “ริบบอนเอสเซ็ตส์ไอดี://8073794624” |
tokenIcon | ไอคอนที่ปรากฏข้างกับตัวติดตามโทเค็นเมื่อเก็บโทเค็น | “รายละเอียด: rxbassetid://8073794477” |
tokenTrackerPositionSmallDevice | ตำแหน่งของ UI เครื่องติดตามโทเค็นบนอุปกรณ์ขนาดเล็กเช่นโทรศัพท์ ( 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 นี้ ฟังก์ชันนี้สามารถเรียกได้จาก Script เท่านั้น
กุญแจ | คำอธิบาย | เริ่มต้น |
---|---|---|
tokenTag | ใช้ป้ายชื่อโดย CollectionService เพื่อค้นหาโทเค็นหรือภาคภูมิภาคที่ใช้ในการล่าสมบัติ | “สกาเวนเจอร์ฮันท์พาร์ท” |
datastoreName | ชื่อของ DataStore ที่ใช้โดยการหาสมบัติเพื่อเก็บความคืบหน้าของคอลเลกชันของผู้เล่นแต่ละราย | “สกาเวนเจอร์ฮันท์โทเค็น” |
resetOnPlayerRemoving | หากเป็นเช่นนั้นจริง รีเซ็ตความคืบหน้าของผู้ใช้เมื่อพวกเขาออกจากประสบการณ์; สะดวกสบายในการไม่บันทึกความคืบหน้าในขณะที่ทดสอบการหาสมบัติ | ปลอม |
สคริป
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureServer({tokenTag = "GreenGem",})
ปิดใช้งาน
ซ่อน UI สำหรับการล่าสมบัติทั้งหมด, ตัดการเชื่อมต่อเหตุการณ์ทั้งหมด, และป้องกันผู้เล่นจากการรวบรวมโทเค็นหรือใช้งานกับภูมิภาค
สคริป
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 ที่ชนกับโทเค็นหรือเข้าสู่ภูมิภาคและชื่อของโทเค็นที่ถูกชนกั
ตัวแปร | |
---|---|
ผู้เล่น: Player | ผู้ใช้ที่ชนกับโทเค็นหรือเข้าสู่ภูมิภาค |
itemName: 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 ที่รวบรวมสัญลักษณ์ทั้งหมดและมันจะถูกเป
ตัวแปร | |
---|---|
ผู้เล่น: Player | ผู้เล่นที่เก็บรวบรวมโทเค็นทั้งหมดหรือเข้าสู่ภูมิภาคทั้งหมด |
สคริป
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
แสดงInfoModal
เกิดขึ้นเมื่อผู้เล่นคลิกที่ตัวติดตามโทเค็นเมื่อตัวเลือก useCustomModalsnumberConfig ถูกตั้งค่าให้เป็น 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)
แสดงโมดัลเสร็จสิ้น
เกิดขึ้นเมื่อผู้เล่นคลิกที่ตัวติดตามโทเค็นเมื่อตัวเลือก useCustomModalsnumber1 ตั้งค่าไว้ที่ true และผู้เล่นได้รวบรวมโทเค็นทั้งหมดในการล่าสมบ
สคริปต์ท้องถิ่น
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
คอลแล็กชันนี้จะปรากฏขึ้นทันทีก่อนที่โมดัลจะแสดงขึ้น ให้คุณปิดการใช้งานทั้งหมดของ ScreenGuis หรือองค์ประกอบภายในของพวกเขาก่อนที่จะแสดงโมดัล ดู รหัสGUI สำ
แสดงOtherGuis
คอลลีกชันนี้จะปรากฏขึ้นทันทีหลังจากที่โมดอลถูกปิดลง ให้คุณเปิดใช้งาน ScreenGuis หรือองค์ประกอบภายในของมัน ดู การมองเห็น GUI สำหรับรายละเอียดและตัวอย่างโค้ด