Caccia al Tesoro

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Il ScavengerHunt modulo per sviluppatori offre ai giocatori un modo intrinsecamente gamificato per esplorare il tuo gioco, introducendoli organicamente all'intero luogo. I progressi dei giocatori sono persistenti, quindi le cacce al tesoro possono continuare attraverso le sessioni.

Utilizzo del modulo

Installazione

Per utilizzare il modulo ScavengerHunt in un gioco:

  1. Dal menu Finestra di Studio o dalla barra degli strumenti della scheda Home, apri il Toolbox e seleziona la scheda Creator Store.

  2. Assicurati che sia selezionato l'ordinamento Modelli, quindi fai clic sul pulsante Vedi Tutti per Categorie.

  3. Individua e fai clic sulla tessera Pacchetti.

  4. Individua il modulo Caccia al Tesoro e fai clic su di esso, oppure trascinalo nella vista 3D.

  5. Nella finestra Esplora, sposta l'intero modello ScavengerHunt in ReplicatedStorage. Una volta avviato il gioco, il modulo inizierà a funzionare.

Utilizzo dei token

Il modulo della caccia al tesoro utilizza token come gli oggetti che i giocatori cercano e raccolgono. Il modulo viene fornito con un modello di token che puoi posizionare nel mondo 3D.

  1. Individua il mesh Token1 all'interno della cartella Workspace della cartella principale del modulo.

  2. Sposta Token1 nella gerarchia di Workspace di livello superiore e posizionalo dove desiderato.

  3. Dai al token un nome unico; questo nome è come il modulo tiene traccia di quali token ogni giocatore ha raccolto.

  4. Per aggiungere più token, duplica un token esistente e dagli un nome unico.

Se non vuoi utilizzare i token mesh inclusi, qualsiasi Model o BasePart funzionerà, purché soddisfi i seguenti criteri:

  • L'oggetto ha un tag CollectionService di ScavengerHuntPart. Se desiderato, il nome del tag CollectionService che il modulo utilizza può essere cambiato impostando un valore diverso per tokenTag in una chiamata a configureServer.

  • L'oggetto contiene un'istanza figlia StringValue impostata sul "testo di sapore" da visualizzare quando il token viene raccolto.

    Modello
    MeshPart

Utilizzo delle regioni

Le regioni differiscono leggermente dai token, poiché sono ampie aree che vengono contrassegnate come "raccolte" una volta che il giocatore vi entra. Inoltre, quando un giocatore esce dalla regione, il modulo di testo di sapore viene automaticamente chiuso e la regione stessa viene rimossa dallo spazio di lavoro.

  1. Crea una parte ancorata attorno alla regione, come un blocco o una sfera. Il modulo disabiliterà automaticamente la proprietà CanCollide durante l'esecuzione in modo che i giocatori non collidano fisicamente con la regione.

  2. Dagli un nome unico. Questo nome è come il modulo tiene traccia di quali regioni ogni giocatore ha visitato.

  3. Utilizzando la sezione Tag delle proprietà della parte, applica il tag ScavengerHuntPart alla parte in modo che CollectionService lo rilevi. Se desiderato, il nome del tag che il modulo utilizza può essere cambiato impostando un valore diverso per tokenTag in una chiamata a configureServer.

  4. Includi un'istanza figlia StringValue impostata sul "testo di sapore" da visualizzare quando la regione viene visitata.

Configurazione

Il modulo è preconfigurato per funzionare per la maggior parte dei casi d'uso, ma può essere facilmente personalizzato. Ad esempio, per cambiare la velocità di rotazione dei token e personalizzare il messaggio informativo del modulo:

  1. In StarterPlayerScripts, crea un nuovo LocalScript e rinominalo in ConfigureScavengerHunt.

  2. Incolla il seguente codice nel nuovo script.

    LocalScript - ConfigureScavengerHunt
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
    ScavengerHunt.configureClient({
    infoModalText = "Benvenuto nella mia Caccia al Tesoro!",
    completeModalText = "Grazie per aver partecipato alla mia Caccia al Tesoro!",
    tokenRotationSpeed = 60,
    })

Eventi di raccolta

Ogni volta che un giocatore raccoglie un token o entra in una regione, si attiva l'evento collected. Puoi ascoltare questo evento da uno Script lato server e rispondere di conseguenza. La funzione connessa riceve il Player che ha colliso con il token o è entrato nella regione e il nome di quel token o regione.

Allo stesso modo, quando un giocatore raccoglie tutti i token o entra in tutte le regioni contrassegnate, si attiva l'evento allCollected e la funzione connessa riceve il Player associato. Questa funzione viene attivata solo una volta per giocatore e può essere utilizzata per premiare quel giocatore con un badge, accesso a una nuova area, moneta di gioco, ecc.

Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.collected:Connect(function(player, itemName)
print(player.DisplayName, itemName)
end)
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " ha completato la caccia!")
end)

GUI personalizzata

Questo modulo espone diverse opzioni per personalizzare la sua GUI predefinita, ma puoi scegliere di visualizzare elementi GUI personalizzati invece.

Quando useCustomModals è impostato su true nella funzione configureClient, l'evento showInfoModal si attiva ogni volta che il giocatore attiva il tracker dei token. Allo stesso modo, l'evento showCompleteModal si attiva quando il giocatore ha raccolto tutto nella caccia al tesoro. Entrambi questi eventi possono essere ascoltati in uno LocalScript.

LocalScript
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.showInfoModal:Connect(function()
-- Mostra un modulo informativo personalizzato
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- Mostra un modulo di completamento personalizzato
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)

Visibilità della GUI

Per impostazione predefinita, la caccia al tesoro nasconde tutte le ScreenGuis e CoreGuis (eccetto per l'elenco dei giocatori) quando appare il modulo informativo o il modulo di completamento. Se desideri sovrascrivere questo comportamento di auto-nascita e decidere programmaticamente quali GUI devono rimanere visibili, includi i callback hideOtherGuis e showOtherGuis e rispondi con la tua logica personalizzata.

LocalScript
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Crea una GUI di schermo che non verrà nascosta
local specialGuiInstance = Instance.new("ScreenGui")
-- Disegna la GUI di schermo sopra la GUI della caccia al tesoro
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Aggiungi un'etichetta di testo alla GUI
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Rimane visibile durante la visualizzazione dei moduli"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
ScavengerHunt.hideOtherGuis(function()
-- Nascondi tutte le GUI di schermo definite dallo sviluppatore
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
-- Nascondi GUI core specifiche
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Mostra tutte le GUI di schermo definite dallo sviluppatore che erano nascoste
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Mostra GUI core specifiche che erano nascoste
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)

Riferimento API

Funzioni

configureClient

configureClient(config: table)

Sovrascrive le opzioni di configurazione predefinite lato client attraverso le seguenti chiavi/valori nella tabella config. Questa funzione può essere chiamata solo da uno LocalScript.

ChiaveDescrizionePredefinito
autoDismissTimeTempo in secondi prima che il modulo si chiuda automaticamente o navighi alla pagina successiva se ce n'è una. Imposta a 0 per disabilitare.20
closeModalGamepadPulsante del gamepad utilizzato per chiudere i moduli (Enum.KeyCode).ButtonA
closeModalKeyboardTasto della tastiera utilizzato per chiudere i moduli (Enum.KeyCode).E
completeModalTextTesto da mostrare nel modulo che appare dopo aver cliccato sul tracker dei token quando la caccia al tesoro è completa."Grazie per aver partecipato!"
infoModalTextTesto da mostrare nel modulo che appare dopo aver cliccato sul tracker dei token."Trova tutti i token per completare la caccia"
tokenRotationSpeedVelocità alla quale i token ruotano, in gradi al secondo. Imposta a 0 per impedire la rotazione.20
nextArrowImageImmagine utilizzata per indicare che ci sono più pagine del modulo da mostrare dopo la pagina corrente."rbxassetid://8167172095"
openTokenTrackerGamepadPulsante del gamepad utilizzato per mostrare i moduli che appaiono dopo aver attivato il tracker dei token (Enum.KeyCode).ButtonY
openTokenTrackerKeyboardTasto della tastiera utilizzato per mostrare i moduli che appaiono dopo aver attivato il tracker dei token (Enum.KeyCode).Y
openTokenTrackerGamepadButtonImageImmagine per il pulsante del gamepad utilizzato per attivare il tracker dei token."rbxassetid://8025860488"
regionIconIcona da visualizzare accanto al tracker dei token quando si entra nelle regioni."rbxassetid://8073794624"
tokenIconIcona da visualizzare accanto al tracker dei token quando si raccolgono i token."rbxassetid://8073794477"
tokenTrackerPositionSmallDevicePosizione dell'interfaccia utente del tracker dei token su dispositivi piccoli come i telefoni (UDim2).(1, 0, 0, 84)
tokenTrackerPositionLargeDevicePosizione dell'interfaccia utente del tracker dei token su dispositivi più grandi come tablet e PC (UDim2).(1, 0, 1, -16)
useRegionsInvece di token, utilizza regioni.false
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.configureClient({
infoModalText = "Benvenuto nella mia Caccia al Tesoro!",
completeModalText = "Grazie per aver partecipato alla mia Caccia al Tesoro!",
tokenRotationSpeed = 60,
navigationBeam = {
lightEmission = 1
},
modal = {
textSize = 14
},
})

configureServer

configureServer(config: table)

Sovrascrive le opzioni di configurazione predefinite lato server attraverso le seguenti chiavi/valori nella tabella config. Questa funzione può essere chiamata solo da uno Script.

ChiaveDescrizionePredefinito
tokenTagTag utilizzato da CollectionService per trovare tutti i token o le regioni utilizzati nella caccia al tesoro."ScavengerHuntPart"
datastoreNameNome del DataStore utilizzato dalla caccia al tesoro per memorizzare i progressi di raccolta di ciascun giocatore."ScavengerHuntTokens"
resetOnPlayerRemovingSe vero, ripristina i progressi dell'utente quando lascia il gioco; comodo per non salvare i progressi durante il test della caccia al tesoro.false
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.configureServer({
tokenTag = "GreenGem",
})

disable

disable()

Nasconde tutta l'interfaccia utente per la caccia al tesoro, disconnette tutti i listener di eventi di input e impedisce ai giocatori di raccogliere token o interagire con le regioni. Questa funzione può essere chiamata solo da uno Script.

Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.disable()

enable

enable()

Mostra tutta l'interfaccia utente per la caccia al tesoro, collega tutti i listener di eventi di input e consente ai giocatori di raccogliere token e interagire con le regioni. Questa funzione può essere chiamata solo da uno Script.

Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.enable()

Eventi

collected

Si attiva quando un giocatore collida con un token o entra in una regione. La funzione connessa riceverà il Player che ha colliso con il token o è entrato nella regione e il nome del token con cui è avvenuta la collisione o la regione in cui è entrato. Questo evento può essere connesso solo in uno Script.

Parametri
player: PlayerUtente che ha colliso con un token o è entrato in una regione.
itemName: string Nome del token con cui è avvenuta la collisione o della regione in cui si è entrati.
totalCollected: numberNumero totale di token raccolti dall'utente rappresentato da player.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)

allCollected

Si attiva quando un giocatore raccoglie tutti i token o entra in tutte le regioni nella caccia al tesoro. La funzione connessa riceverà il Player che ha raccolto tutti i token, e viene attivata solo una volta per giocatore. Questo evento può essere connesso solo in uno Script.

Parametri
player: PlayerGiocatore che ha raccolto tutti i token o è entrato in tutte le regioni.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " ha completato la caccia!")
end)

showInfoModal

Si attiva quando il giocatore clicca sul tracker dei token quando l'opzione di configurazione useCustomModals è impostata su true. Questo evento può essere connesso solo in uno LocalScript.

LocalScript
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.showInfoModal:Connect(function()
local infoModal = Players.LocalPlayer.PlayerGui.InfoModal
infoModal.Enabled = true
end)

showCompleteModal

Si attiva quando il giocatore clicca sul tracker dei token quando l'opzione di configurazione useCustomModals è impostata su true e il giocatore ha raccolto tutti i token nella caccia al tesoro. Questo evento può essere connesso solo in uno LocalScript.

LocalScript
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.showCompleteModal:Connect(function()
local completeModal = Players.LocalPlayer.PlayerGui.CompleteModal
completeModal.Enabled = true
end)

Callback

hideOtherGuis

hideOtherGuis(callback: function)

Questo callback viene eseguito immediatamente prima che un modulo venga visualizzato, consentendoti di disabilitare intere ScreenGuis o elementi al loro interno prima che il modulo venga mostrato. Vedi Visibilità della GUI per dettagli e codice di esempio.

showOtherGuis

showOtherGuis(callback: function)

Questo callback viene eseguito immediatamente dopo che un modulo è stato chiuso, consentendoti di abilitare intere ScreenGuis o elementi al loro interno. Vedi Visibilità della GUI per dettagli e codice di esempio.

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.