ล่าสัตว์หาอาหาร

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

การ ล่าสัตว์นักสำรวจ โมดูลนักพัฒนา ให้ผู้เล่นมีวิธีที่มีอยู่แล้วในการสำรวจประสบการณ์ของคุณโดยการแนะนำพวกเขาไปยังสถานที่ทั้งหมดอย่างอินทรีย์ความคืบหน้าของผู้เล่นยังคงอยู่ ดังนั้นการล่าสัตว์ล่าสัตว์จึงสามารถดำเนินต่อไปได้ในระหว่างเซสชัน

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

การติดตั้ง

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

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

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

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

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

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

ใช้โทเค็น

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

  1. ค้นหาเมช Token1 ภายในโฟลเดอร์ พื้นที่ทำงาน ของโฟลเดอร์หลักของโมดูล

  2. ย้าย โทเค็น 1 ไปยังชั้นสูงสุดของ พื้นที่ทำงาน และตำแหน่งที่ต้องการ

  3. ให้ชื่อที่ไม่ซ้ำกันแก่โทเค็น ; ชื่อนี้เป็นวิธีที่โมดูลติดตามโทเค็นที่ผู้เล่นแต่ละคนได้รวบรวม

  4. เพื่อเพิ่มโทเค็นเพิ่มเติม ทำซ้ำโทเค็นที่มีอยู่แล้วและให้ชื่อที่ไม่ซ้ำกัน

หากคุณไม่ต้องการใช้โทเค็นเน็ตเวิร์กแบบบรรจุ ใดๆ Model หรือ BasePart จะทำงานได้ตราบใดที่ตรงกับเกณฑ์ต่อไปนี้:

  • วัตถุมีแท็ก CollectionService ของ ScavengerHuntPart .หากต้องการ ชื่อแท็ก CollectionService ที่ใช้โดยโมดูลสามารถเปลี่ยนได้โดยการตั้งค่าค่าที่แตกต่างสำหรับ tokenTag ในการเรียก กำหนดค่าเซิร์ฟเวอร์

  • วัตถุมีตัวอย่างลูก StringValue ที่ตั้งค่าเป็น "flavor text" เพื่อแสดงเมื่อรวบรวมโทเค็น

    รูปแบบ
    ส่วนตาข่าย

ใช้ภูมิภาค

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

  1. สร้างส่วนที่ติดอยู่รอบภูมิภาค เช่น บล็อกหรือทรงกลมโมดูลจะปิดใช้งานคุณสมบัติ CanCollide โดยอัตโนมัติในระหว่างการทำงานดังนั้นผู้เล่นจะไม่ชนกับภูมิภาคทางกายภาพ

  2. ให้ชื่อที่ไม่ซ้ำกัน แก่มัน ชื่อนี้เป็นวิธีที่โมดูลติดตามว่าแต่ละผู้เล่นได้เข้าสู่ภูมิภาคใด

  3. โดยใช้ส่วน แท็ก ของคุณสมบัติของชิ้นส่วนหรือแท็ก เอเดอร์แท็กของ Studio ใช้แท็ก ScavengerHuntPart กับชิ้นส่วนเพื่อให้ CollectionService ตรวจพบหากต้องการ ชื่อแท็กที่ใช้โดยโมดูลสามารถเปลี่ยนได้โดยการตั้งค่าค่าที่แตกต่างสำหรับ tokenTag ในการเรียก กำหนดค่าเซิร์ฟเวอร์

  4. รวมตัวอย่างเด็ก StringValue ที่กำหนดเป็น "flavor text" เพื่อแสดงเมื่อภูมิภาคถูกใส่

การกำหนดค่า

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

  1. ใน 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 สำหรับรายละเอียดและรหัสตัวอย่าง