The ScavengerHunt 模块开发者 memberikan pemain cara bermain yang bawaan, secara organik memperkenalkan mereka ke seluruh tempat. Kemajuan pemain bertahan, jadi buru2>manusia2> dapat melanjutkan di sesi.
Penggunaan Modul
Pemasangan
Untuk menggunakan modul ScavengerHunt dalam pengalaman:
Dari tab Lihat, buka tab Kotak Alat dan pilih tab Toko Pencipta .
Pastikan Model penyortiran dipilih, lalu klik tombol Lihat Semua untuk Kategori .
Temukan dan klik Modul Dev ubin.
Temukan modul Scavenger Hunt dan klik, atau seret-seret ke dalam tampilan 3D.
Di jendela Explorer, pindahkan seluruh ScavengerHunt model ke ServerScriptService . Setelah mengeksekusi pengalaman, modul akan di distribusikan ke berbagai layanan dan mulai berjalan.
Menggunakan Token
Modul pemburu harta karun menggunakan token sebagai item yang dicari dan dikumpulkan. Modul ini hadir dengan satu model token yang dapat Anda posisikan di dunia 3D.
Temukan Token1 meshes di dalam Folder Workspace di mana Anda menemukan modul utama.
Pindahkan Token1 ke tingkat hierarki Ruang kerja dan letakkan di mana diinginkan.
Berikan token nama unik ; nama ini adalah cara modul melacak setiap token yang telah dikumpulkan oleh setiap pemain.
Untuk menambahkan lebih banyak token, duplikasi token yang ada dan berikan nama yang unik.
Jika Anda tidak ingin menggunakan token meshes yang disertakan, apa pun Model atau BasePart akan bekerja, asalkan itu memenuhi kriteria berikut:
Objek memiliki tag CollectionService dari ScavengerHuntPart . Jika diinginkan, nama tag CollectionService yang digunakan modul dapat diubah dengan menetapkan nilai yang berbeda untuk 1> tokenTag1> dalam panggilan 4> konfigurasikanServer4>.
Objek berisi anak StringValue instance set ke "flavor text" untuk ditampilkan saat token dikumpulkan.
Menggunakan Wilayah
Wilayah berbeda sedikit dari token, karena area besar yang ditandai sebagai "dikumpulkan" setelah pemain memasukinya. Selain itu, ketika pemain meninggalkan wilayah, text flavor otomatis menolak dan wilayah itu sendiri dihapus dari ruang kerja.
Buat bagian yang dipasang di sekitar wilayah, seperti blok atau bola. Modul ini akan secara otomatis menonaktifkan properti CanCollide saat dijalankan sehingga pemain tidak bertabrakan fisik dengan wilayah.
Berikan nama yang unik . Nama ini adalah cara modul melacak daftar mana setiap pemain telah masuk.
Menggunakan bagian Tags dari ke속性 bagian, atau Studio's Tag Editor, menerapkan label ScavengerHuntPart ke bagian sehingga 1> Class.CollectionService1> mendeteksi hal itu. Jika diinginkan, nama tag yang digunakan oleh
Terdiri dari satu atau lebih anak StringValue instance set ke "flavor text" untuk ditampilkan saat wilayah diaktifkan.
Konfigurasi
Modulnya dapat dikonfigurasi sebelumnya untuk bekerja untuk kebanyakan kasus penggunaan, tetapi dapat dengan mudah disesuaikan. Misalnya, untuk mengubah kecepatan rotasi token dan menyesuaikan pesan informasi modalkan:
Di StarterPlayerScripts , buat LocalScript baru dan ganti nama menjadi ConfigureScavengerHunt .
Tempaste kode berikut ke dalam naskah baru.
Skrip Lokal - Konfigurasi Pemburu Gatallocal 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,})
Acara Koleksi
Setiap kali seorang pemain mengumpulkan token atau memasuki wilayah, acara yang dikumpulkan diaktifkan. Anda dapat mendengarkan acara ini dari sisi server Script dan merespon sesuai. Fungsi terhubung menerima Player yang bertabrakan dengan token atau memasuki wilayah dan nama token atau wilayah terse
Demikian pula, ketika seorang pemain mengumpulkan semua token atau memasuki semua wilayah yang ditandai , acara semua yang dikumpulkan diaktifkan dan fungsi terkait diterima menerima fungsi terkait diterima. Fungsi ini hanya diaktifkan once per
Skrip
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 Kustom
Modul ini mengekspos beberapa opsi untuk menyesuaikan GUI defaultnya, tetapi Anda dapat memilih untuk menampilkan elemen GUI khusus.
Ketika useCustomModals ditetapkan ke true dalam fungsi konfigurasikanClient, acara 1> showInfoModal1> diaktifkan setiap kali pemain mengaktifkan pemindai token. Secara serupa, acara 4> showCompleteModal4>
Skrip Lokal
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- Tampilkan modul info khusus
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- Tampilkan modalkuasi khusus selesai
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)
Kesadaran GUI
Secara default, pemburu gatal menyembunyikan semua ScreenGuis dan CoreGuis (kecuali daftar pemain) ketika info modal atau modele penyelesaian muncul. Jika Anda ingin mengatasi perilaku otomatis ini dan secara
Skrip Lokal
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 = {}
-- Buat GUI layar yang tidak akan tersembunyi
local specialGuiInstance = Instance.new("ScreenGui")
-- Gambil GUI layar di atas GUI berburu harta karun
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Tambahkan label teks ke 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()
-- Sembunyikan semua GUI layar yang didefinisikan oleh pengembang
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
-- Sembunyikan GUI inti khusus
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Tunjukkan semua GUI layar yang didefinisikan oleh pengembang yang tersembunyi
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Tampilkan GUI inti khusus yang tersembunyi
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Referensi API
Fungsi
KonfigurasikanClient
Menggeser opsi konfigurasi pihak klien default melalui tombol/值 berikut di tabel config . Fungsi ini hanya dapat dipanggil dari LocalScript .
Kunci | Deskripsi | Standar |
---|---|---|
autoDismissTime | Waktu dalam detik sebelum moda otomatis menolak diri atau beralih ke halaman berikutnya jika ada. Tetapkan 0 untuk menonaktifkan. | 20 |
closeModalGamepad | Tombol gamepad digunakan untuk menutup modalk ( Enum.KeyCode ). | ButtonA |
closeModalKeyboard | Tombol keyboard digunakan untuk menutup modalk ( Enum.KeyCode ). | E |
completeModalText | Teks untuk ditampilkan di modalkah yang muncul setelah mengklik pemburu token ketika pemburuhan sampah selesai. | “Terima kasih telah berpartisipasi!” |
infoModalText | Teks untuk menunjukkan pada modalkah yang muncul setelah mengklik pemantau token. | “Temukan semua token untuk menyelesaikan pemburuan” |
tokenRotationSpeed | Kecepatan di mana token berputar, dalam derajat per detik. Tetapkan 0 untuk mencegah rotasi. | 20 |
nextArrowImage | Gambar yang digunakan untuk menunjukkan ada lebih banyak halaman modalku yang dapat ditampilkan setelah halaman modalku saat ini. | “rbxassetid://8167172095” |
openTokenTrackerGamepad | Tombol gamepad digunakan untuk menunjukkan modalk yang muncul setelah mengaktifkan token tracker ( Enum.KeyCode ). | ButtonY |
openTokenTrackerKeyboard | Tombol keyboard yang digunakan untuk menunjukkan modalk yang muncul setelah mengaktifkan token tracker ( Enum.KeyCode ). | Y |
openTokenTrackerGamepadButtonImage | Gambar untuk tombol gamepad yang digunakan untuk mengaktifkan token tracker. | “rbxassetid://8025860488” |
regionIcon | Ikon untuk ditampilkan di samping token tracker saat memasuki wilayah. | “rbxassetid://8073794624” |
tokenIcon | Ikon untuk ditampilkan di samping token tracker saat mengumpulkan token. | “rbxassetid://8073794477” |
tokenTrackerPositionSmallDevice | Posisi UI token tracker pada perangkat kecil seperti telepon (UDim2). | (1, 0, 0, 84) |
tokenTrackerPositionLargeDevice | Posisi UI pemantau token pada perangkat besar seperti tablet dan PC (UDim2). | (1, 0, 1, -16) |
useRegions | Alih-alih token, gunakan wilayah . | benar |
Skrip Lokal
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},})
Konfigurasikan Server
Menggeser opsi konfigurasi server-side default melalui kunci/值 berikut di tabel config . Fungsi ini hanya dapat dipanggil dari Script .
Kunci | Deskripsi | Standar |
---|---|---|
tokenTag | Label digunakan oleh CollectionService untuk menemukan semua token atau wilayah yang digunakan dalam berburu scavenger. | “ScavengerHuntPart” |
datastoreName | Nama DataStore yang digunakan oleh berburu harta karun untuk menyimpan kemajuan koleksi setiap pemain. | “ScavengerHuntTokens” |
resetOnPlayerRemoving | Jika benar, atur ulang kemajuan pengguna saat mereka meninggalkan pengalaman; mudah untuk tidak menyimpan kemajuan saat menguji berburu harta karun. | benar |
Skrip
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureServer({tokenTag = "GreenGem",})
nonaktifkan
Sembunyikan semua UI untuk berburu harta karun, menghubungkan semua pendengar acara masuk, dan mencegah pemain mengumpulkan token atau berinteraksi dengan wilayah. Fungsi ini hanya dapat dipanggil dari Script .
Skrip
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.disable()
aktifkan
Menunjukkan semua UI untuk berburu harta karun, menghubungkan semua pendengar acara masukan, dan memungkinkan pemain untuk mengumpulkan token dan berinteraksi dengan wilayah. Fungsi ini hanya dapat dipanggil dari Script .
Skrip
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.enable()
Acara
dikumpulkan
Mengaktifkan ketika pemain bertabrakan dengan token atau memasuki wilayah. Fungsi yang terhubung akan menerima Player yang bertabrakan dengan token atau memasuki wilayah dan nama token yang dikalahkan. Acara ini hanya dapat dihubungkan dalam Script .
Parameter | |
---|---|
pemain: Player | Pengguna yang bertabrakan dengan token atau memasuki wilayah. |
itemName: string | Nama token yang bertabrakan atau wilayah yang di masukkan. |
Total yang Dikumpulkan: number | Jumlah total token yang dikumpulkan oleh pengguna diwakili oleh player . |
Skrip
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)
seluruh yangDikumpulkan
Diaktifkan ketika seorang pemain mengumpulkan semua token atau memasuki semua wilayah dalam berburu harta karun. Fungsi terhubung akan menerima Player yang mengumpulkan semua token, dan itu hanya pernah diaktifkan sekali per pemain. Acara ini hanya dapat dihubungkan dalam Script .
Parameter | |
---|---|
pemain: Player | Pemain yang mengumpulkan semua token atau memasuki semua wilayah. |
Skrip
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
tampilkanInfoModal
Diaktifkan ketika pemain mengklik pada token tracker ketika useCustomModalsopsi konfigurasi ditetapkan ke true. Acara ini hanya dapat dihubungkan dalam LocalScript .
Skrip Lokal
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)
tampilkanModal
Diaktifkan ketika pemain mengklik pemantar token saat konfigurasi useCustomModalskonfigurasi pilihan ditetapkan ke true dan pemain telah mengumpulkan semua token dalam scavenger hunt. Acara ini hanya dapat dihubungkan dalam 1> Class.LocalScript1> .
Skrip Lokal
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)
Panggilan
sembunyikanGuis lainnya
Panggilan ini berjalan segera sebelum modal ditampilkan, memungkinkan Anda menonaktifkan seluruh ScreenGuis atau elemen di dalamnya sebelum modal ditampilkan. Lihat Kesadaran GUI untuk detail dan kode sampel.
tampilkan OtherGuis
Panggilan ini berjalan segera setelah modalkan telah dibatalkan, memungkinkan Anda untuk mengaktifkan seluruh ScreenGuis atau elemen di dalamnya. Lihat Kesadaran GUI untuk rincian dan kode sampel.