Il modulo Caccia al tesoro dà ai giocatori un modo intrinsecamente gioioso di esplorare la tua esperienza, introducendoli organicamente in tutto il Posto.Il progresso del giocatore è persistente, quindi le cacce al tesoro possono continuare attraverso le sessioni.
Uso del modulo
Installazione
Per utilizzare il modulo Caccia al tesoro in un'esperienza:
Assicurati che la classificazione Modelli sia selezionata, quindi fai clic sul pulsante Vedi tutti per Categorie .
Individua e fai clic sul riquadro Moduli di sviluppo .
Individua il modulo Caccia al tesoro e cliccalo, oppure trascinalo nella vista 3D.
Nella finestra Explorer, sposta l'intero modello Caccia al tesoro in ServerScriptService .Dopo l'esecuzione dell'esperienza, il modulo si distribuirà a vari servizi e inizierà a funzionare.
Utilizzare i token
Il modulo di caccia al tesoro utilizza gettoni come oggetti che i giocatori cercano e raccolgono.Il modulo viene fornito con un modello di token che puoi posizionare nel Mondo3D.
Individua la mesh Token1 all'interno della cartella Workspace del modulo principale.
Sposta Token1 nella gerarchia di alto livello Workspace e posizionalo dove desiderato.
Dai al token un nome unico ; questo nome è il modo in cui il modulo traccia quali token ogni giocatore ha raccolto.
Per aggiungere più token, duplica un token esistente e dargli un nome univoco.
Se non vuoi usare i gettoni mesh in blocco, qualsiasi Model o BasePart funzionerà, a patto di soddisfare 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 configureServer.
L'oggetto contiene un'istanza figlia StringValue impostata al "testo del gusto" da mostrare quando il token viene raccolto.
Modello MeshPart
Utilizzare le regioni
Le regioni differiscono leggermente dai token, poiché grandi aree che sono contrassegnate come "raccolte" una volta che il giocatore le entra.Inoltre, quando un giocatore lascia la regione, il testo del gusto modal viene automaticamente respinto e la regione stessa viene rimossa dallo spazio di lavoro.
Crea una parte ancorata intorno alla regione, come un blocco o una sfera.Il modulo disabiliterà automaticamente la proprietà CanCollide a runtime in modo che i giocatori non si scontrino fisicamente con la regione.
Dagli un nome unico . Questo nome è il modo in cui il modulo traccia le regioni in cui ogni giocatore è entrato.
Usando la sezione Tag delle proprietà della parte o l'editor di tag di Studio, applica il tag ScavengerHuntPart alla parte in modo che CollectionService la rilevi.Se desiderato, il nome del tag che il modulo utilizza può essere cambiato impostando un valore diverso per tokenTag in una chiamata configureServer.
Includi un set di istanze figlio StringValue alla "text flavor" da mostrare quando viene inserita la regione.
Configurazione
Il modulo è preconfigurato per funzionare nella maggior parte dei casi d'uso, ma può essere facilmente personalizzato.Ad esempio, per modificare la velocità di rotazione del token e personalizzare il messaggio di Messaggiomodale:
In StarterPlayerScripts , crea una nuova LocalScript e rinominala in Configura la caccia al tesoro .
Incolla il seguente codice nel nuovo script.
Script locale - ConfiguraScavengerHuntlocal 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,})
Eventi di raccolta
Ogni volta che un giocatore raccoglie un token o entra in una regione, si attiva l'evento raccolto.Puoi ascoltare questo evento da un lato server Script e rispondere di conseguenza.La funzione connessa riceve il Player che ha colliduto con il token o è entrato nella regione e il nome del token o della regione.
Allo stesso modo, quando un giocatore raccoglie tutti i gettoni o entra in tutte le regioni contrassegnate, l'evento allCollected si attiva e la funzione connessa riceve l'Player associato.Questa funzione viene eseguita solo una volta per giocatore e può essere utilizzata per ricompensare quel giocatore con un badge, l'accesso a una nuova area, valuta in-experience, ecc.
Scrittura
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 or Intefaccia grafica utentepersonalizzata
Questo modulo espone diverse opzioni per personalizzare la sua GUI or Intefaccia grafica utentepredefinita, 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 tracciatore di 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 un LocalScript .
Script locale
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- Mostra una modalità di informazioni personalizzata
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- Mostra una modalità completa personalizzata
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)
Visibilità GUI
Per impostazione predefinita, la caccia al tesoro nasconde tutti ScreenGuis e CoreGuis (ad eccezione dell'elenco dei giocatori) quando appare la modalità informazioni o la modalità completamento.Se vuoi annullare questo comportamento di nascondimento automatico e decidere programmaticamente quali GUI dovrebbero rimanere visibili, includi i hideOtherGuis e showOtherGuis callback e rispondi con la tua logica personalizzata.
Script locale
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 = {}
-- Crea una GUI dello schermo che non verrà nascosta
local specialGuiInstance = Instance.new("ScreenGui")
-- Disegna l'interfaccia utente dello schermo sopra l'GUI or Intefaccia grafica utentedella caccia al tesoro
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Aggiungi l'etichetta del testo alla GUI or Intefaccia grafica utente
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()
-- Nascondi tutte le interfacce utente 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 interfacce utente specifiche del core
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Mostra tutte le interfacce utente a schermo definite dallo sviluppatore che sono state nascoste
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Mostra interfacce utente specifiche del nucleo nascoste
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Riferimento API
Functioni
configurareClient
configuraCliente(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 un LocalScript .
Chiave | Descrizione | Basilare |
---|---|---|
autoDismissTime | Tempo in secondi prima che il modale si disattivi automaticamente o navighi alla pagina successiva se ne esiste uno. Impostare a 0 per Disattivare. | 20 |
closeModalGamepad | Pulsante del gamepad utilizzato per chiudere le modalità ( Enum.KeyCode ). | ButtonA |
closeModalKeyboard | Tasto della tastiera utilizzato per chiudere le modalità ( Enum.KeyCode ). | E |
completeModalText | Testo da mostrare nella modalità che appare dopo aver cliccato sul tracciatore di token quando la caccia al tesoro è completata. | “Grazie per aver partecipato!” |
infoModalText | Testo da mostrare nella modalità che appare dopo aver cliccato sul tracciatore di token. | Trova tutti i token per completare la caccia" |
tokenRotationSpeed | Velocità a cui i gettoni Rotare, in gradi al secondo. Impostare a 0 per prevenire la rotazione. | 20 |
nextArrowImage | Immagine utilizzata per indicare che ci sono più pagine modal da mostrare dopo la pagina modal attuale. | ""rbxassetid://8167172095" |
openTokenTrackerGamepad | Pulsante del gamepad utilizzato per mostrare le modalità che appaiono dopo aver attivato il tracciatore di token ( Enum.KeyCode ). | ButtonY |
openTokenTrackerKeyboard | Tasto della tastiera utilizzato per mostrare le modalità che appaiono dopo aver attivato il tracciatore di token ( Enum.KeyCode ). | Y |
openTokenTrackerGamepadButtonImage | Immagine per il pulsante del gamepad che viene utilizzato per attivare il tracciatore di token. | ""rbxassetid://8025860488" |
regionIcon | Icona da mostrare accanto al tracker di token quando si entra nelle regioni. | ""rbxassetid://8073794624" |
tokenIcon | Icona da mostrare accanto al tracker di token durante la raccolta di token. | ""rbxassetid://8073794477" |
tokenTrackerPositionSmallDevice | Posizione dell'interfaccia utente del tracciatore di token su piccoli dispositivi come telefoni ( UDim2 ). | (1, 0, 0, 84) |
tokenTrackerPositionLargeDevice | Posizione dell'interfaccia utente del tracciatore di token su dispositivi più grandi come tablet e PC ( UDim2 ). | (1, 0, 1, -16) |
useRegions | Invece di token, usa regioni. | fallito |
Script locale
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},})
configurareServer
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 un Script .
Chiave | Descrizione | Basilare |
---|---|---|
tokenTag | Tag utilizzato da CollectionService per trovare tutti i token o le regioni utilizzati nella caccia al tesoro. | ""ScavengerHuntPart" |
datastoreName | Nome del DataStore utilizzato dalla caccia al tesoro per archiviare il progresso della raccolta di ogni Giocatore. | ""ScavengerHuntTokens" |
resetOnPlayerRemoving | Se vero, ripristina i progressi dell'utente quando lascia l'esperienza; conveniente per non salvare i progressi durante la prova della caccia al tesoro. | fallito |
Scrittura
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureServer({tokenTag = "GreenGem",})
disattivare
disattivare()
Nasconde tutta l'interfaccia utente per la caccia al tesoro, disconnette tutti gli ascoltatori di eventi di input e impedisce ai giocatori di raccogliere token o interagire con le regioni.Questa funzione può essere chiamata solo da un Script .
Scrittura
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.disable()
abilitare
abilita()
Mostra tutta l'interfaccia utente per la caccia al tesoro, connette tutti gli ascoltatori di eventi di input e consente ai giocatori di raccogliere token e interagire con le regioni.Questa funzione può essere chiamata solo da un Script .
Scrittura
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.enable()
Eventi
raccolto
Si accende quando un giocatore si imbatte in un token o entra in una regione.La funzione connessa riceverà il Player che si è scontrato con il token o è entrato nella regione e il nome del token che è stato scontrato o la regione che è stata inserita.Questo evento può essere connesso solo in un Script .
Parametri | |
---|---|
giocatore: Player | Utente che si è scontrato con un token o è entrato in una regione. |
itemName: string | Nome del token che è stato collisionato o della regione che è stata inserita. |
totalCollected: number | Numero totale di token raccolti dall'utente rappresentato da player . |
Scrittura
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)
tuttoRaccolto
Si accende 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 gettoni e viene sparata solo una volta per Giocatore.Questo evento può essere connesso solo in un Script .
Parametri | |
---|---|
giocatore: Player | Giocatore che ha raccolto tutti i token o è entrato in tutte le regioni. |
Scrittura
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
mostraInfoModal
Si accende quando il giocatore fa clic sul tracker di token quando l'opzione configurazione è impostata su vero.Questo evento può essere connesso solo in un LocalScript .
Script locale
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)
mostraCompletaModal
Si accende quando il giocatore fa clic sul tracker di token quando l'opzione Configurazione è impostata su e il giocatore ha raccolto tutti i gettoni nella caccia al tesoro.Questo evento può essere connesso solo in un LocalScript .
Script locale
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)
Ritorni
nascondiOtherGuis
hideOtherGuis(Richiama: function )
Questa richiamata viene eseguita immediatamente prima che venga visualizzata una modalità, consentendoti di disabilitare l'intera ScreenGuis o gli elementi all'interno della modalità prima che venga visualizzata.Vedi Visibilità GUI per i dettagli e il codice di esempio.
mostraOtherGuis
showOtherGuis(Richiama: function )
Questo richiamo viene eseguito immediatamente dopo che una modalità è stata respinta, consentendoti di abilitare l'intero ScreenGuis o elementi all'interno di essa.Vedi Visibilità GUI per i dettagli e il codice di esempio.