Le ScavengerHunt module de développeur donne aux joueurs une manière intrinsèquement gagnée de visiter votre expérience, en les introduisant progressivement dans tout l'emplacement. La progression des joueurs est persistante, de sorte que les chasses au trésor peuvent se poursuivre à travers les sessions.
Utilisation des modules
Installation
Pour utiliser le module ScavengerHunt dans une expérience :
À partir de l'Affichage onglet, ouvrez la boîte à outils et sélectionnez l' boutique des créateurs onglet.
Assurez-vous que le tri par Modèles est sélectionné, puis cliquez sur le bouton Voir tout pour Catégories.
Localisez et cliquez sur la case modules de pavé .
Localisez le module Chasse au trésor et cliquez dessus, ou glissez-le dans la voir3D.
Dans la fenêtre Explorer, déplacez le modèle entier de ScavengerHunt dans ServerScriptService . Lors de l'exécution de l'expérience, le module se distribuera à différents services et commencera à s'exécuter.
Utiliser des jetons
Le module de chasse au trésor utilise des jetons comme les articles que les joueurs recherchent et collectent. Le module est livré avec un modèle de jeton que vous pouvez positionner dans le monde 3D.
Localisez le Token1 maillage à l'intérieur du dossier principal de la fédération de l'espace de travail.
Déplacez Token1 dans la hiérarchie de niveau supérieur Workspace et positionnez-le où vous le souhaitez.
Donnez au jeton un nom unique ; ce nom est comment le module traite les jetons que chaque joueur a collectés.
Pour ajouter plus de jetons, dupliquez un jeton existant et donnez-lui un nom unique.
Si vous ne voulez pas utiliser les jetons de maillage fournis, n'importe lequel des Model ou BasePart fonctionnera, tant qu'il répond aux critères suivants :
L'objet a une étiquette CollectionService de ScavengerHuntPart . Si nécessaire, le nom de la balise CollectionService que le module utilise peut être modifié en définissant une valeur différente pour 1> tokenTag1> dans un appel 4> configureServer4>.
L'objet contient une instance enfantine StringValue définie sur le « text flavour » pour afficher lorsque le jeton est collecté.
Utiliser les régions
Les régions diffèrent légèrement des jetons, car de grandes zones qui sont marquées comme "collected" une fois que le joueur entre elles. De plus, lorsqu'un joueur quitte la région, le mot de texte de goût active automatiquement et la région elle-même est supprimée de l'espace de travail.
Créez une partie ancrée autour de la région, telle qu'un bloc ou une sphère. Le module désactivera automatiquement la propriété CanCollide au moment de l'exécution afin que les joueurs ne se heurtent pas physiquement avec la région.
Donnez-lui un nom unique . Ce nom est comment le module traite les régions dans lesquelles chaque joueur s'est entré.
En utilisant la section balises de la propriété de la partie, ou Studio's éditeur de balises, appliquez la balise ScavengerHuntPart à la partie afin que 1> Class.CollectionService1> la détecte. Si nécessaire, le nom de la balise que le module utilise peut être modifié en dé
Incluez une instance enfant StringValue définie sur « text », à afficher lorsque la région est entrée.
Configuration
Le module est configuré par défaut pour fonctionner pour la plupart des cas d'utilisation, mais il peut être facilement personnalisé. Par exemple, pour modifier la vitesse de rotation des jetons et personnaliser le message d'information modale :
Dans StarterPlayerScripts , créez un nouveau LocalScript et renommez-le en ConfigureScavengerHunt .
Collez le code suivant dans le nouveau script.
LocalScript - Configure la chasse au trésorlocal 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,})
Événements de collection
Chaque fois qu'un joueur récupère un jeton ou entre dans une région, l'événement collecté est déclenché. Vous pouvez écouter cet événement à partir d'un côté du serveur Script et répondre en conséquence. La fonction connectée reçoit le Player qui s'est heurté au jeton ou est entré dans la région et son nom de jeton ou région.
De même, lorsqu'un joueur récupère tous les jetons ou entre dans toutes les régions marquées, l'événement toutCollected se déclenche et la fonction connectée reçoit le jeton associé 1> Class.Player1>. Ce jeton est seulement activé une fois par joueur et il peut être utilisé pour récompenser ce joueur avec un
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)
interface utilisateur graphiquepersonnalisée
Ce module expose plusieurs options pour personnaliser son interface utilisateur graphiquepar défaut, mais vous pouvez choisir d'afficher des éléments de GUI personnalisés à la place.
Lorsque useCustomModals est défini sur true dans la fonction configurer le client, l'événement 1> showInfoModal1> se déclenche chaque fois que le joueur active le tracker de jetons. De même, l'événement 4> showCompleteModal4> se déclenche lorsque le jou
Script local
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- Afficher une modalité d'information personnalisée
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- Afficher une modale de fin personnalisée
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)
Visibilité de la GUI
Par défaut, la chasse au trésor masque tous les ScreenGuis et CoreGuis (sauf la liste des joueurs) lorsque la boîte de dialogue d'information ou la boîte de dialogue de finition apparaissent. Si vous souhaitez modifier ce comportement d'auto-cacher et déc
Script local
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 = {}
-- Créer un GUI de création d'écran qui ne sera pas caché
local specialGuiInstance = Instance.new("ScreenGui")
-- Dé dessinez la GUI de l'écran au-dessus de la interface utilisateur graphiquede la chasse au trésor
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Ajouter une étiquette de texte à l'interface interface utilisateur graphique
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()
-- Masquer toutes les interfaces graphiques de développeur définies
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
-- Cacher les interfaces graphiques du noyau spécifiques
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Afficher toutes les interfaces graphiques de développeur qui ont été cachées
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Afficher les interfaces utilisateur du noyau spécifiques qui étaient cachées
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Référence de l'API
Fonctions
configurer le client
Les options de configuration côté client par défaut sont remplacées par les valeurs/clés suivantes dans la table config. Ce paramètre ne peut être appelé que depuis un LocalScript.
Clé | Description | Par défaut |
---|---|---|
autoDismissTime | Temps en secondes avant que le modale se déclenche automatiquement ou navigue vers la page suivante s'il y en a une. Réglé sur 0 pour désactiver. | 20 |
closeModalGamepad | Bouton de gamepad utilisé pour fermer les modaux ( Enum.KeyCode ). | ButtonA |
closeModalKeyboard | Touche de clavier utilisée pour fermer les modaux ( Enum.KeyCode ). | E |
completeModalText | Texte à afficher sur la modalité qui apparaît après avoir cliqué sur le tracker de jetons lorsque la chasse au trésor est terminée. | « Merci d'avoir participé ! » |
infoModalText | Texte à afficher sur la modalité qui apparaît après avoir cliqué sur le tracker de jetons. | « Trouvez tous les jetons pour terminer la chasse » |
tokenRotationSpeed | Vitesse à laquelle les jetons tourner, en degrés par seconde. Défini sur 0 pour empêcher la rotation. | 20 |
nextArrowImage | Image utilisée pour indiquer qu'il y a plus de pages modales à afficher après la page modale actuelle. | « rxbassetid://8167172095 » |
openTokenTrackerGamepad | Bouton de gamepad utilisé pour montrer les modaux qui apparaissent après l'activation du tracker de jetons ( Enum.KeyCode ). | ButtonY |
openTokenTrackerKeyboard | Touche du clavier utilisée pour afficher les modaux qui apparaissent après l'activation du tracker de jetons ( Enum.KeyCode ). | Y |
openTokenTrackerGamepadButtonImage | Image pour le bouton de la manette de jeu qui est utilisé pour activer le tracker de jetons. | « rxbassetid://8025860488 » |
regionIcon | Icône à afficher à côté du tracker de jetons lors de l'entrée dans les régions. | « rxbassetid://8073794624 » |
tokenIcon | Icône à afficher à côté du tracker de jetons lors de la collecte de jetons. | « rxbassetid://8073794477 » |
tokenTrackerPositionSmallDevice | Position de l'interface de suivi des jetons sur les petits appareils tels que les téléphones ( UDim2 ). | (1, 0, 0, 84) |
tokenTrackerPositionLargeDevice | Position de l'interface de suivi des jetons sur les appareils plus grands, comme les tablettes et les PC ( UDim2 ). | (1, 0, 1, -16) |
useRegions | Au lieu de jetons, utilisez régions. | faux |
Script local
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},})
Configurer le serveur
Les options de configuration côté serveur par défaut sont remplacées par les valeurs/clés suivantes dans la table config. Ce paramètre ne peut être appelé que depuis un Script.
Clé | Description | Par défaut |
---|---|---|
tokenTag | Balise utilisée par CollectionService pour trouver tous les jetons ou régions utilisés dans la chasse au trésor. | « ScavengerHuntPart » |
datastoreName | Nom du DataStore utilisé par la chasse au trésor pour stocker la progression de la collection de chaque joueur. | « ScavengerHuntTokens » |
resetOnPlayerRemoving | Si oui, réinitialise la progression de l'utilisateur lorsqu'il quitte l'expérience ; pratique pour ne pas enregistrer la progression pendant le test de la chasse au trésor. | faux |
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureServer({tokenTag = "GreenGem",})
désactiver
Masque toute l'interface utilisateur pour la chasse au trésor, déconnecte tous les événements d'entrée et empêche les joueurs de collecter des jetons ou d'interagir avec des régions. Cette fonction ne peut être appelée qu'à partir d'un Script.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.disable()
activer
Affiche toutes les UI pour la chasse au trésor, connecte tous les événements d'entrée, et permet aux joueurs de collecter des jetons et d'interagir avec des régions. Cette fonction ne peut être appelée qu'à partir d'un Script.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.enable()
Événements
collecté
Activer un feu quand un joueur se heurte à un jeton ou entre dans une région. La fonction connectée recevra le Player qui s'est heurté au jeton ou entre dans la région et le nom du jeton qui a été collé dans ou dans la région qui a été entrée. Cet événement ne peut être connecté qu' dans un Script .
Paramètres | |
---|---|
joueur: Player | Utilisateur qui a collédé avec un jeton ou qui a entré dans une région. |
itemName : string | Nom du jeton qui a été collisionné ou la région qui a été entrée. |
TotalCollecté : number | Nombre total de jetons collectés par l'utilisateur représenté par 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)
tout collecté
Se déclenche lorsqu'un joueur collecte tous les jetons ou entre dans toutes les régions dans la chasse au trésor. La fonction connectée recevra le Player qui a collecté tous les jetons, et il ne s'agit que d'une seule connexion par joueur. Cet événement ne peut être connecté qu'à un Script.
Paramètres | |
---|---|
joueur: Player | Joueur qui a collecté tous les jetons ou entré dans toutes les régions. |
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
afficherInfoModal
Se déclenche lorsque le joueur clique sur le tracker de jetons lorsque l'option useCustomModals配置 est définie sur vrai. Cet événement ne peut être connecté qu'à un LocalScript.
Script local
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)
afficherComplet
Se déclenche lorsque le joueur clique sur le tracker de jetons lorsque l'option useCustomModalsconfiguration est définie sur true et que le joueur a collecté tous les jetons dans la chasse au trésor. Cet événement ne peut être connecté qu'à un 2>Class.LocalScript2>.
Script local
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)
Appels
masquerAutreGuis
Ce rappel s'exécute immédiatement avant qu'une boîte de dialogue ne soit affichée, vous permettant de désactiver tout ScreenGuis ou éléments dans boîte de dialogue avant que la boîte de dialogue ne soit affichée. Voir visibilité de l'GUI pour plus de détails et un code d'exemple.
afficherAutreGuis
Ce rappel s'exécute immédiatement après la fermeture d'un modale, vous permettant d'activer l'ensemble de ScreenGuis ou les éléments à l'intérieur. Voir visibilité de l'GUI pour plus de détails et un code d'exemple.