Il ScavengerHunt modulo sviluppatore dà ai giocatori un modo giocherizzato in modo intrinseco per esplorare la tua esperienza, introducendo in modo organico loro nel Postointero. La progressione del giocatore è persistente, quindi le cacciature possono continuare in sessioni.
Uso del modulo
Installazione
Per usare il modulo ScavengerHunt in un'esperienza:
Dalla Visualizza scheda, apri la Toolbox e seleziona la scheda Creator Store .
Assicurati che la classificazione Modelli sia selezionata, quindi fai clic sul pulsante Vedi tutto per Categorie.
Individua e fai clic sul riquadro Moduli di Piastrella.
Individua il modulo Caccia alla scavola e fai clic su di esso, o trascinalo nella vista 3D.
Nella finestra Explorer, sposta l'intero modello ScavengerHunt in ServerScriptService. Al suo esecuzione, il esperienzasi distribuirà su varie servizi e inizierà ad essere eseguito.
Utilizzare i gettoni
Il modulo della caccia al tesoro usa gettoni come oggetti che i giocatori cercano e raccolgono. Il modulo viene fornito con un modello di token che puoi posizionare nel Mondo3D.
Individua il Token1 mesh all'interno della cartella Workspace della cartella principale del modulo.
Sposta Token1 nella gerarchia di livello superiore 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ù gettoni, duplica un gettono esistente e aspetta un nome unico.
Se non vuoi usare i gettoni mesh inclusi, qualsiasi Model o BasePart funzionerà, a patto che soddisfi i seguenti criteri:
L'oggetto ha un tag CollectionService di ScavengerHuntPart . Se lo desidera, il nome del tag CollectionService che il modulo utilizza può essere cambiato impostando un valore diverso per 1> tokenTag1> in una chiamata 4> configureServer4> .
L'oggetto contiene una istanza figlia StringValue impostata sul "flavor text" per visualizzare quando il token viene raccolto.
Usa le regioni
Le regioni differiscono leggermente dai gettoni, poiché grandi aree contrassegnate come "collezionate" una volta che il giocatore entra in esse. Inoltre, quando un giocatore lascia la regione, il modale di testo del gusto disattiva automaticamente e la regione stessa viene rimossa dall'area di lavoro.
Crea una parte ancorata intorno alla regione, come un blocco o una sfera. Il modulo disabiliterà automaticamente la proprietà CanCollide durante l'esecuzione in modo che i giocatori non si siano fisicamente collisi con la regione.
Dai un nome unico a questo nome. Questo nome è come il modulo traccia le regioni che ciascun giocatore ha inserito.
Usando la sezione Tag delle proprietà della parte, o Studio's Tag Editor, applica il tag ScavengerHuntPart alla parte in modo che 1> Class.CollectionService1> la rilevi. Se lo desideri, il nome del tag che il modulo utilizza può essere cambiato impostando un valore diverso per
Includi una istanza figlia StringValue impostata sul "flavor text" per visualizzare quando la regione viene inserita.
Configurazione
Il modulo è prefigurato per funzionare per la maggior parte dei casi d'uso, ma può essere facilmente personalizzato. Ad esempio, per cambiare la velocità di rotazione del token e personalizzare il Messaggioinformativo modale:
In StarterPlayerScripts , crea un nuovo LocalScript e rinominalo in ConfigureScavengerHunt .
Incolla il seguente codice nello script nuovo.
Script locale - Configura la caccia al tesorolocal 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, l'evento collected viene attivato. Puoi ascoltare questo evento dal lato server Script e rispondere in modo appropriato. La funzione connessa riceve il Player che si è schiantato con il token o ha 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 tuttiCollected viene attivato e il funzionamento connesso riceve la funzione associata 1> Class.Player1> . Questa funzione viene attivata una sola volta per giocatore e
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 or Intefaccia grafica utentepersonalizzata
Questo modulo espose diverse opzioni per personalizzare la sua interfaccia utente predefinita, ma puoi scegliere di visualizzare elementi GUI personalizzati invece.
Quando useCustomModals è impostato su true nella funzione ConfiguraClient, l'evento 1> mostraInfoModal1> viene attivato ogni volta che il giocatore attiva il tracker del token. Allo stesso modo, l'evento 4> mostraCompleteModal4> viene attivato
Script locale
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- Mostra una finestra 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à della GUI
Per impostazione predefinita, la caccia al tesoro nasconde tutti ScreenGuis e CoreGuis (ad eccezione della lista dei giocatori) quando appare la finestra informativa o la finestra di completamento quando l'informazione modale o la finestra di completamento appare. Se vuoi sovras
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 un'interfaccia utente di schermo che non sarà nascosto
local specialGuiInstance = Instance.new("ScreenGui")
-- Disegna la GUI della schermata sopra la GUI or Intefaccia grafica utentedella caccia
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Aggiungi un'etichetta di testo all'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 dai singoli sviluppatori
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
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Mostra tutte le interfacce utente a schermo definito che sono state nascoste
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Mostra GUI del nucleo specifiche che sono state nascoste
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Riferimento API
Funzioni
configurareClient
Sovrascrivi le opzioni di configurazione lato client attraverso le seguenti chiavi/valori nella tabella config. Questa funzione può essere chiamata solo da un LocalScript .
Chiave | Descrizione | Predefinito |
---|---|---|
autoDismissTime | Tempo in secondi prima che il modale si disattivi automaticamente o navigi alla prossima pagina se c'è uno. Impostato su 0 per Disattivare. | 20 |
closeModalGamepad | Il pulsante Gamepad usato per chiudere le modalità ( Enum.KeyCode ). | ButtonA |
closeModalKeyboard | Tasto di chiusura della tastiera usato per chiudere le modalità ( Enum.KeyCode ). | E |
completeModalText | Testo da mostrare sulla modalità che appare dopo aver cliccato il tracker del token quando la caccia al tesoro è completata. | Grazie per aver partecipato! |
infoModalText | Testo da mostrare sulla modalità che appare dopo aver cliccato sul tracker del token. | Trova tutti i gettoni per completare la caccia" |
tokenRotationSpeed | Velocità con cui i gettoni Rotare, in gradi per secondo. Impostato su 0 per prevenire la rotazione. | 20 |
nextArrowImage | Immagine utilizzata per indicare che ci sono più pagine modalità da mostrare dopo la pagina modalità attuale. | "rbxassetid://8167172095" |
openTokenTrackerGamepad | Il pulsante Gamepad viene utilizzato per mostrare le modalità che appaiono dopo l'attivazione del token tracker ( Enum.KeyCode ). | ButtonY |
openTokenTrackerKeyboard | Tasto di tastiera usato per mostrare i modali che appaiono dopo l'attivazione del tracker dei token ( Enum.KeyCode ). | Y |
openTokenTrackerGamepadButtonImage | Immagine per il pulsante per il gamepad che viene utilizzato per attivare il tracker dei gettoni. | "rbxassetid://8025860488" |
regionIcon | Icona per visualizzare accanto al tracker dei token quando si inserisce una regione. | "rbxassetid://8073794624" |
tokenIcon | Icona per visualizzare accanto al tracker dei gettoni quando si collezionano gettoni. | ""rbxassetid://8073794477" |
tokenTrackerPositionSmallDevice | Posizione dell'interfaccia utente del tracker dei token su piccoli dispositivi come telefoni ( UDim2 ). | (1, 0, 0, 84) |
tokenTrackerPositionLargeDevice | Posizione del tracker dei token UI su dispositivi più grandi come tablet e PC ( UDim2 ). | (1, 0, 1, -16) |
useRegions | Invece di gettoni , usa regioni . | falso |
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},})
Configura Server
Sovrascrivi le opzioni di configurazione lato server predefinite attraverso le seguenti chiavi/valori nella tabella config. Questa funzione può essere chiamata solo da un Script .
Chiave | Descrizione | Predefinito |
---|---|---|
tokenTag | Tag usato da CollectionService per trovare tutti i gettoni o le regioni usate nella caccia al tesoro. | ScavengerHuntPart (in inglese) |
datastoreName | Nome del DataStore usato dalla caccia al tesoro per memorizzare i progressi della collezione di ogni Giocatore. | ScavengerHuntTokens (it) |
resetOnPlayerRemoving | Se vero, ripristina il progresso dell'utente quando esce dall'esperienza; conveniente non salvare il progresso durante il test della caccia al tesoro. | falso |
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureServer({tokenTag = "GreenGem",})
disattivare
Nasconde tutte le UI per la caccia al tesoro, disconnette tutti gli eventi di input e impedisce ai giocatori di raccogliere gettoni o interagire con le regioni. Questa funzione può essere chiamata solo da un Script .
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.disable()
abilita
Mostra tutte le UI per la caccia al tesoro, connette tutti gli eventi di input e consente ai giocatori di raccogliere gettoni e interagire con le regioni. Questa funzione può essere chiamata solo da un Script .
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.enable()
Eventi
collezionato
Si attiva quando un giocatore si scontra con un token o entra in una regione. La funzione connessa riceverà il Player che si è scontrato con il token o ha entrato nella regione e il nome del token che è stato scontrato in o nella regione che è stata entrata. Questo evento può essere connesso in un Script .
Parametri | |
---|---|
Giocatore: Player | Utente che si è scontrato con un token o ha entrato in una regione. |
itemName: string | Nome del token che è stato collaudato o la regione che è stata inserita. |
totalCollected: number | Numero totale di gettoni raccolti dall'utente rappresentato da player . |
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)
TuttoCollezionato
Si attiva quando un giocatore raccoglie tutti i gettoni o entra in tutte le regioni nella caccia al tesoro. La funzione connessa riceverà il Player che ha raccolto tutti i gettoni, e viene attivata solo una volta per Giocatore. Questo evento può essere connesso solo in un Script .
Parametri | |
---|---|
Giocatore: Player | Giocatore che ha raccolto tutti i gettoni o ha entrato in tutte le regioni. |
Script
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 attiva quando il giocatore fa clic sul tracker dei token quando l'opzione useCustomModalsconfigurazione è impostata su true. 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)
Mostra completato
Si attiva quando il giocatore fa clic sul tracker dei token quando l'opzione useCustomModalsconfigurazione è impostata su true e il giocatore ha raccolto tutti i token nella caccia al tesoro. Questo evento può essere connesso solo in un 1> Class.LocalScript1> .
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)
Chiamate
nascondiAltriGuis
Questo callback viene eseguito immediatamente prima di essere visualizzata una finestra modale, in modo da poter disabilitare interi ScreenGuis o elementi all'interno di essi prima che venga visualizzata la finestra modale. Vedi Visibilità GUI per i dettagli e il codice di esempio.
mostraAltriGuis
Questo callback viene eseguito immediatamente dopo aver chiuso la modalità, consentendoti di abilitare intere ScreenGuis o elementi all'interno di loro. Vedi Visibilità GUI per i dettagli e il codice di esempio.