EventSequencer est un framework puissant qui vous permet de construire des événements en en ligne, des scènes croisées sur une séquence d'actions et de déclencheurs structurés.Plus précisément, ce module vous aide à :
- Construire un événement ou une scène sur un framework structuré à travers des configurations planifiées d'audio, d'animations et d'adolescents.
- transition entre plusieurs scènes sur plusieurs serveurs, en synchronisant des animations et des visuels complexes à une chronologie.
- Recherchez à travers un événement et prévisualisez l'expérience à des fins de test et de développement.
Ce framework a été testé en combat dans des événements Roblox comme le Twenty One Pilots et 24kGoldn concerts, ainsi que de nombreuses expériences très visitées.
Pour voir EventSequencer en action dans un emplacementmodifiable, consultez le modèle Concert dans Roblox Studio.Ce modèle est un point de départ complet pour les développeurs de créer des événements/concerts et de se familiariser avec les différentes fonctionnalités et composants impliqués.

Utilisation du module
Étabissement
Pour utiliser le framework EventSequencer dans une expérience :
Assurez-vous que le tri des modèles est sélectionné, puis cliquez sur le bouton Voir tout pour les catégories .
Localisez et cliquez sur la case modules de développement .
Localisez le module séquenceur d'événements et cliquez dessus, ou glissez-déposez-le dans la voir3D.
Dans la fenêtre Explorateur, déplacez l'ensemble du modèle séquenceur d'événements dans ServerScriptService .Une fois l'expérience exécutée, le module se distribuera à différents services et commencera à fonctionner.
Modes de framework
Mode de remplacement
Le mode cadre par défaut est remplacer le mode dans lequel vous concevez des scènes uniques en plaçant des objets 3D , du terrain , des propriétés d'éclairage , des effets environnementaux et des objets d'interface utilisateur dans le dossier Environnement de cette scène.Lorsqu'une scène se charge, ces objets et propriétés sont distribués dans Workspace , Terrain , et Lighting , remplaçant les objets/propriétés existants pour former un espace cloné.
Mode en ligne
Un mode de cadre alternatif est le mode en ligne dans lequel vous concevez de manière similaire des scènes uniques avec une logique de script pour leur flux/événements, mais le cadre ne détruira pas les objets 3D existants, le terrain, la logique d'éclairage, les effets environnementaux et les objets d'interface utilisateur afin de cloner les ressources/propriétés d'une scène de son dossier Environnement lors du chargement.
Pour activer le mode inline :
À l'intérieur du modèle séquenceur d'événements que vous avez placé dans ServerScriptService , descendez et sélectionnez la valeur en ligne à l'intérieur du dossier ReplicatedStorage .
Dans la fenêtre propriétés, activez sa case à cocher valeur .
Créer des scènes
Une scène est essentiellement partie d'un événement global ou d'une scène coupée emballée dans une série de dossiers. Chaque scène contient une logique de script qui définit son flux/événements, et une scène peut stocker ses propres objets 3D, terrain, propriétés d'éclairage, effets environnementaux et objets d'interface utilisateur.
Pour commencer rapidement, vous pouvez trouver une scène vide à l'intérieur du dossier principal du module :
Développez le dossier Séquenceur d'événements et localisez le dossier BlankScene .
Déplacez ou copiez l'ensemble du dossier BlankScene dans ReplicatedStorage .
Durée du temps
Chaque scène devrait avoir une durée de temps , en secondes, définissant sa durée — tout comme un film ou un concert a une durée définie.La durée du temps est définie comme un attribut numérique sur le dossier de la scène nommé durée du temps que vous pouvez définir directement dans Studio ou programmatiquement via .


Milieu
Le dossier environnement d'une scène contient tout ce que les utilisateurs voient et entendent, y compris objets 3D, terrain, propriétés d'éclairage et effets environnementaux, ainsi que des objets d'interface utilisateur.Lorsqu'une scène se charge, ces objets et propriétés sont distribués dans Workspace , Terrain , et Lighting , remplaçant les objets/propriétés existants pour former un espace cloné.
Le dossier Environnement contient les conteneurs suivants :
Conteneur | Avertissement |
---|---|
Client | Contient toutes les ressources à charger lorsque tout utilisateur (client) rejoint l'événement, telles que des objets d'interface utilisateur ou un plateformed'animation. |
Générations de joueurs | Contient des parties où les utilisateurs apparaissent lorsqu'ils rejoignent. Toute partie de ce dossier se comporte de manière similaire à un SpawnLocation . |
Serveur | Contient toutes les ressources à charger lorsque la première scène est créée sur un serveur. Il est recommandé que la plupart des ressources visuelles aillent ici. |
Terrain | Contient le terrain de scène. |
Éclairage | Contient des propriétés d'éclairage globales en tant qu'attributs, ainsi que des modifieurs comme effets atmosphériques et effets de post-traitement. |
Événements
Le dossier des événements d'une scène est purement un espace réservé pour qui communiquent entre les modules client et serveur .Ce n'est pas une exigence de placer quoi que ce soit dans ce dossier.
Client
Ce script exécute la logique du schéma sur le client.
Serveur
Ce script exécute la logique du schéma sur le serveur.
Schémas de scène
Le schéma d'une scène définit ce qui se produit à quel point dans le calendrier de la scène .Vous devez définir le schéma d'une scène dans ses modules client et serveur, et inclure des crochets de cycle de vie pour gérer quand les configurations survernir.
Crochets de cycle de vie
Le schéma crochets de cycle de vie vous permet de gérer quand les opérations de scène survernir. Une scène en production s'exécutera généralement dans le flux le plus simple :
OnRun peut être interrompu lors de la recherche de :
Tous les trois crochets peuvent également se répéter si la scène est rejouée :
Configurationnes
La configuration du schéma définit les opérations principales d'une scène, par exemple jouer de l'audio à 00:32, de mettre en file d'attente une animation pour s'aligner sur cet audio, programmer un événement de scène comme un afficherde feux d'artifice et plus encore.Chaque configuration prend en charge certaines fonctions d'appel où le premier paramètre ( self ) est l'instance de configuration.
Rechercher des scènes
Une fonctionnalité unique de séquenceur d'événements est la capacité de « rechercher » autour des scènes comme vous le pourriez rechercher à travers une vidéo.Dans Mode de remplacement, vous pouvez également passer d'une scène à l'autre pour prévisualiser un événement multi-scène entier avant de le déployer en production.
La recherche de scène n'est pas accessible à tout le monde puisque les utilisateurs simplement profitant de l'événement ne devraient pas avoir la capacité de contrôler son flux de temps.Au lieu de cela, vous devez accorder l'autorisation en fonction de l'événement ainsi que de groupes spécifiques et/ou de rôles à l'intérieur d'entre eux.
Créez une nouvelle Script dans ServerScriptService .
Collez le code suivant dans le nouveau script.
Script - Définir les permissions de recherchelocal ReplicatedStorage = game:GetService("ReplicatedStorage")local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))EventSequencer.setSeekingPermissions({placeIDs = {},userIDs = {},groups = {{GroupID = , MinimumRankID = },}})Remplissez les tables suivantes dans l'appel setSeekingPermissions comme suit :
placeIDs Liste délimitée par des virgules des valeurs PlaceId pour soutenir la recherche à l'intérieur. userIDs Liste délimitée par des virgules de UserIds pour ceux qui peuvent rechercher dans les endroits pris en charge. groups Liste délimitée par des virgules de tables, chacune contenant un ID de groupe et le rang minimum des membres de ce groupe qui peuvent rechercher dans les endroits pris en charge.
plugingestionnaire de scène
Le plugin gestionnaire de scène est un outil utile pour charger et décharger des scènes, lumière, et terrain.À moins que vous utilisiez Mode en ligne, il est fortement recommandé d'utiliser ce plugin au lieu de placer/éditer manuellement des objets et des propriétés de scène.
Pour installer le plugin :
Dans le menu Affichage du studio, ouvrez la boîte à outils .
Avec l'onglet boutique des créateurs sélectionné, sélectionnez plugins dans le menu déroulant.
Dans le champ de recherche, tapez gestionnaire de scène et appuyez sur Enter pour localiser le plugin.
Cliquez sur l'icône du plugin pour afficher ses détails puis cliquez sur le bouton Installer .
Une fois le plugin installé, il apparaît dans l'onglet plugins de Studio.
Charger et décharger des scènes
Comme indiqué dans créer des scènes, le dossier environnement d'une scène contient tout ce que les utilisateurs voient et entendent, y compris des objets 3D.Le plugin vous aide à charger rapidement les ressources d'une scène dans ou hors des dossiers organisés dans l'espace de travail.
actionde plugin | Avertissement |
---|---|
Charger le client | Si le contenu du client de la scène est déchargé, déplace son dossier environnement / client dans le dossier espace de travail / ScenesClient . |
Charger le serveur | Si le contenu du serveur de la scène est déchargé, déplace son dossier environnement / serveur dans le dossier espace de travail / ScenesServer . |
Décharger le client | Si le contenu du client de la scène est chargé, il déplace son dossier Client de Espace de travail / ScenesClient vers le dossier [Scène] / Environnement . |
Décharger le serveur | Si le contenu du serveur de la scène est chargé, il déplace son dossier serveur de espace de travail / ScenesServer vers le dossier [Scène] / environnement . |
Décharger toutes les scènes | Déplace le dossier client et serveur de chaque scène chargée vers son dossier environnement . |
Enregistrer et charger l'éclairage
Le service de niveau supérieur Lighting stocke toutes les propriétés d'éclairage et les effets visuels d'un emplacement.Puisque c'est un service de niveau supérieur, vous ne pouvez pas le déplacer manuellement dans le dossier Environnement / Serveur / Environnement / Client d'une scène spécifique.Au lieu de cela, vous pouvez utiliser le plugin pour copier ses propriétés et ses enfants dans le dossier Environnement / Éclairage de la scène.
Configurez les propriétés d'éclairage de la scène , les effets de post-traitement , les effets atmosphériques et les skyboxes via le service de niveau supérieur .
Dans la fenêtre du plugin gestionnaire de scène , cliquez sur enregistrer l'éclairage pour la scène souhaitée.
Sélectionnez et élargissez la configuration de l'environnement de cette scène / d'éclairage et vous verrez les mêmes propriétés d'éclairage que les attributs du dossier, ainsi que les enfants clonés du service de niveau supérieur ..
Instances clonées Attributs enregistrés Une fois les propriétés d'éclairage et les enfants sauvegardés pour une scène, vous pouvez les charger rapidement dans le service de niveau supérieur Lighting en cliquant sur Charger l'éclairage à partir de la fenêtre du plugin.
Enregistrer et charger le terrain
Puisque Terrain est une classe de niveau supérieur dans Workspace , vous ne pouvez pas déplacer manuellement le terrain généré ou sculpté dans le dossier Environnement / Serveur ou Environnement / Client d'une scène spécifique.Au lieu de cela, vous pouvez utiliser le plugin pour le copier dans le dossier environnement / terrain de la scène.
Configurez le terrain de la scène via le service de niveau supérieur terrain .
Dans la fenêtre du plugin gestionnaire de scène , cliquez sur enregistrer le terrain pour la scène souhaitée.
Sélectionnez et développez le dossier environnement / terrain de cette scène et vous verrez un objet TerrainRegion qui représente le terrain sauvegardé.
Une fois le terrain sauvegardé pour une scène, vous pouvez le charger rapidement de nouveau dans le service de niveau supérieur Terrain en cliquant sur Charger le terrain à partir de la fenêtre du plugin.
Référence de l'API
Crochets de cycle de schéma
Lors de la configuration
L'hook de cycle de vie OnSetup est destiné à initialiser des ressources et des variables qui seront référencées dans OnRun ou OnEndScene , à configurer connections qui sont destinées à durer pendant la scène, etc.Ce crochet reçoit le paramètre timePositionObject qui vous permet de lire le temps actuel lors du démarrage.
Schéma client
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local clientEnvironment
local serverEnvironment
local dummy
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
-- Environnements de scène d'accès ; ne s'applique pas au mode en ligne
clientEnvironment = EventSequencer.getCurrentSceneEnvironment()
serverEnvironment = EventSequencer.getCurrentServerEnvironmentFromClient()
-- Attendez les ressources
dummy = clientEnvironment:WaitForChild("Dummy")
print("Current time is:", timePositionObject.Value)
end
Schéma du serveur
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local serverEnvironment
local partColorConnection
local changePartColorEvent = script.Parent.Events.ChangePartColor
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Server)")
-- environnementde scène d'accès ; ne s'applique pas au mode en ligne
serverEnvironment = EventSequencer.getCurrentSceneEnvironment()
partColorConnection = changePartColorEvent.OnServerEvent:Connect(function(player, changedPart, newColor)
serverEnvironment.changedPart.Color = newColor
end)
print("Current time is:", timePositionObject.Value)
end
En cours d'exécution
OnRun est le principal hook de cycle opérationnel dans un schéma.Il doit contenir toutes les configurations planifiées pour la scène, depuis le jeu de audio ou une animation jusqu'à planifier un événement comme un spectacle de feux d'artifice.
Schéma client
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
OnStart = function(self)
print("Audio playing")
end,
OnEnd = function(self)
print("Audio ended")
end
})
end
Sur la fin de la scène
L'hook de cycle de vie OnEndScene est utile pour nettoyer tout ce qui reste en suspens dans la scène, comme la rupture des connexions créées dans OnSetup ou OnRun qui restent pendant la durée de la scène.
Schéma du serveur
Schema.OnEndScene = function()
print("OnEndScene (Server)")
if partColorConnection then
partColorConnection:Disconnect()
partColorConnection = nil
end
end
Configurations de schéma
audio
Crée un objet Sound dans l'espace de travail qui joue à un certain moment.Le son est ensuite supprimé après la fin de la scène ou après que l'objet Sound ait fini de jouer.
Clé de configuration | Avertissement |
---|---|
StartTime | Quand jouer l'audio par rapport à la durée de la scène, en secondes. |
SoundId | ID de ressource de l'audio à jouer. |
OnStart | Fonction personnalisée à déclencher lorsque l'audio commence à jouer. |
OnEnd | Fonction personnalisée à déclencher lorsque l'audio finit de jouer. |
Volume | Volume de l'objet Sound ; la valeur par défaut est 0.5. |
Schéma client
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
OnStart = function(self)
print("Audio playing")
end,
OnEnd = function(self)
print("Audio ended")
end
})
end
animer
Crée un Animation qui joue à un certain moment.
Clé de configuration | Avertissement |
---|---|
StartTime | Quand jouer l'animation par rapport à la durée de la scène, en secondes. |
EndTime | Temps facultatif pour terminer l'animation par rapport à la durée de la scène, en secondes. |
Rig | Le rig d'animation pour jouer l'animation. |
AnimationId | ID de ressource de l'animation à jouer. |
Speed | Vitesse de lecture de l'animations; la valeur par défaut est 1. |
FadeInTime | Quantité de temps pour disparaître dans l'animations, en secondes ; la valeur par défaut est de 0,2 (secondes). |
FadeOutTime | Quantité de temps pour estomper l'animations, en secondes ; la valeur par défaut est 0.2 (secondes). |
OnStart | Fonction personnalisée à déclencher lorsque l'animation commence à jouer. |
OnEnd | Fonction personnalisée à déclencher lorsque l'animation finit de jouer. |
Looped | Si l'animationsdoit être bouclée ; la valeur par défaut est false . |
SyncToAudio | Table définissant si l'animation doit être synchronisée avec une configuration audio audio. Accepte les clés suivantes :
|
Schéma client
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
})
local DanceAnimation = Schema:animate({
AnimationId = "rbxassetid://3695333486",
Rig = Dummy,
Speed = 1,
FadeInTime = 0.1,
FadeOutTime = 0.3,
SyncToAudio = {
Audio = MainAudio,
StartAtAudioTime = 5,
},
OnStart = function(self)
print("Animation playing")
end,
OnEnd = function(self)
print("Animation stopped")
end
})
end
tween
Crée un configurable Tween qui est préservé dans la recherche et dans la jointure dynamique, ce qui signifie que vous pouvez chaîner des adolescents à des points distincts dans le temps et tout devrait jouer et se synchroniser comme prévu.
Clé de configuration | Avertissement |
---|---|
StartTimes | Table des temps de début en relation avec la durée de la scène, en secondes. |
Tween | Table définissant l'objet et les propriétés à tween. Accepte les clés suivantes :
|
OnStart | Fonction personnalisée à déclencher lorsque le préadolescent commence à jouer. |
OnHeartbeat | Fonction personnalisée à tirer à chaque Heartbeat ; reçoit l'alpha adolescent comme deuxième paramètre. |
OnEnd | Fonction personnalisée à déclencher lorsque la partie d'adolescent se termine. |
SyncToAudio | Table définissant si synchroniser le tween vers une configuration audio audio. Accepte les clés suivantes :
|
Schéma client
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
})
local LightFadeOut = Schema:tween({
StartTimes = {29.884},
Tween = {
Object = game:GetService("Lighting"),
Info = TweenInfo.new(2, Enum.EasingStyle.Sine, Enum.EasingDirection.Out),
Properties = {
Brightness = 0,
}
},
SyncToAudio = {
Audio = MainAudio,
StartAtAudioTimes = {5, 7.2, 9.4, 11.6},
},
OnStart = function(self)
print("Tween playing")
end,
OnHeartbeat = function(self, alpha)
print("Tween alpha", alpha)
end,
OnEnd = function(self)
print("Tween completed")
end,
})
end
intervalle
Exécute une fonction de rappel personnalisée pendant une durée spécifiée sur une fréquence spécifiée, en secondes.Utile pour répéter des événements comme des lumières clignotantes, la pulsation de l'intensité d'un audio, etc.La fréquence la plus basse possible est de 0 secondes, mais techniquement la fréquence minimale est toujours clampée à Heartbeat .
Clé de configuration | Avertissement |
---|---|
StartTime | Début de la durée de l'intervalle par rapport à la durée de la scène, en secondes. |
EndTime | Fin de la durée de l'intervalle par rapport à la durée de la scène, en secondes. |
Frequency | Fréquence à laquelle la fonction OnInterval doit lancer, en secondes, avec la première exécution à StartTime. |
OnStart | Fonction personnalisée à déclencher lorsque la série d'intervalles commence. |
OnInterval | Fonction personnalisée à tirer à chaque intervalle dans la durée spécifiée ( StartTime à EndTime ). |
OnEnd | Fonction personnalisée à déclencher lorsque la série d'intervalles se termine. |
SyncToAudio | Table définissant si la durée de l'intervalle doit être synchronisée avec une configuration audio audio. Accepte les clés suivantes :
|
Schéma client
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
})
local ClientTimerUpdate = Schema:interval({
Frequency = 1,
SyncToAudio = {
StartAtAudioTime = 2.5,
EndAtAudioTime = 10,
Audio = MainAudio
},
OnInterval = function(self)
print(MainAudio.Sound.TimePosition, MainAudio.CurrentSoundIntensityRatio)
end,
})
end
horaire
Semblable à intervalle excepté que vous pouvez définir plusieurs temps de départ spécifiques pour le même événement, comme le calendrier d'un spectacle de feux d'artifice deux fois dans une scène.
Clé de configuration | Avertissement |
---|---|
StartTimes | Table des temps de début en relation avec la durée de la scène, en secondes. |
OnStart | Fonction personnalisée pour tirer à chaque fois spécifiée dans la table StartTimes. |
Skippable | Boolean définissant si l'événement prévu peut être ignoré pour les utilisateurs qui rejoignent tard ou pour lorsqu'il est recherché avant un temps de début prévu.Si la valeur est définie sur false, tous les temps d'événement prévus avant le temps de jointure/recherche se produiront au moment de la jointure/recherche.Si la valeur est définie sur true, seules les heures de début prévues après rejoindre/chercher se survernir.La valeur par défaut est false . |
SyncToAudio | Table définissant si synchroniser le calendrier à une configuration audio audio. Accepte les clés suivantes :
|
Schéma client
Schema.OnRun = function()
print("OnRun (Client)")
Schema:schedule({
StartTimes = {5, 27.25},
OnStart = function(self)
-- Initialiser la connexion de battement cardiaque temporaire
local tempConnection = RunService.Heartbeat:Connect(function()
end)
-- Informer le cadre de la connexion
Schema:inform(tempConnection)
end
})
end
informer
Informe le framework de tout module, d'objets d'interface, de connexions, etc.qui sont créées dans le hook de cycle de vie OnRun , garantissant qu'elles sont correctement nettoyées lorsqu'elles sont recherchées .Les cas d'utilisation incluent :
Informer le cadre d'une connexion temporaire ad hoc comme RunService.Heartbeat afin que la connexion soit nettoyée lors de la recherche d'un point précédent de la durée de la scène.
Schéma du serveurSchema.OnRun = function()print("OnRun (Server)")Schema:schedule({StartTimes = {5},OnStart = function(self)-- Initialiser la connexion de battement cardiaque temporairelocal tempConnection = RunService.Heartbeat:Connect(function()end)-- Informer le cadre de la connexionSchema:inform(tempConnection)end})endAppeler une fonction de nettoyerpersonnalisée dans un ModuleScript qui initialise une connexion ou une autre référence pendant le hook de cycle de vie OnRun.
Schéma du serveurlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local RunService = game:GetService("RunService")local customModule = require(ReplicatedStorage:WaitForChild("CustomModule"))local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))local Schema = EventSequencer.createSchema()Schema.OnRun = function()print("OnRun (Server)")Schema:schedule({StartTimes = {5},OnStart = function(self)-- Appeler la fonction "init" dans le module personnalisécustomModule.init()-- Appeler la fonction "clean" dans le module personnalisé lors du nettoyerde la scèneSchema:inform(customModule, customModule.clean)end,})endModuleScript - Module personnalisélocal RunService = game:GetService("RunService")local CustomModule = {}CustomModule.init = function()-- Initialiser la connexion de battement de cœurCustomModule.connection = RunService.Heartbeat:Connect(function()end)endCustomModule.clean = function()-- Déconnecter et effacer la connexion au rythme cardiaqueif CustomModule.connection thenCustomModule.connection:Disconnect()CustomModule.connection = nilendendreturn CustomModule
Fonctions
charger la scène
loadScene(nom de scène : string , temps de démarrage : number ?)
Chargement programmatique d'une scène par sceneName et démarrage à partir de startTime depuis le début.Il y aura une période de grâce de 5 secondes pour que la scène se charge du serveur avant que la recherche ne commence et que la scène commence à jouer.Cela signifie que si vous appelez loadScene("[SceneName]", 20) à exactement 4:15:00 PM, le framework attendra 5 secondes en plus des 20 demandés, lançant la scène à 4:15:25 PM.
Scénario
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Déterminez la scène suivante à charger lorsque la scène actuelle se termine
EventSequencer.onOrchestrationFinished:Connect(function(endedSceneName)
if endedSceneName == "PreShow" then
-- « Prémontrer » terminé ; chargez la première scène du concert
EventSequencer.loadScene("Track1")
elseif endedSceneName == "Track1" then
-- « Track1 » est terminé ; chargez la deuxième scène dans le concert
EventSequencer.loadScene("Track2")
else
-- Retour en boucle sur la scène avant le spectacle
EventSequencer.loadScene("PreShow")
end
end)
créer Schema
createSchema(): table
Retourne une instance du schéma de la scène pour créer une logique pour la scène.
Schéma client
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
end
rechercher
seek(temps : number )
Recherche la valeur time en secondes à partir du début de la scène actuellement chargée.
Scénario
local ReplicatedStorage = game:GetService("ReplicatedStorage")local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))EventSequencer.seek(95.58)
définir le temps d'avertissement de scène
setSceneWarningTime(endSceneTimeWindow: number )
Définit la quantité de temps à partir de la fin de toutes les scènes à laquelle une avertissement est envoyé.Vous pouvez détecter l'avertissement soit du côté du client via onSceneEndingWarningForClient ou du côté du serveur via onSceneEndingWarningForServer .
Scénario
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Charger la scène
EventSequencer.loadScene("BeautifulScene")
-- Définir le temps d'avertissement à 5 secondes avant la fin de la scène
EventSequencer.setSceneWarningTime(5)
-- Détecter quand la scène est sur le point de se terminer
EventSequencer.onSceneEndingWarningForServer:Connect(function()
warn("Scene is about to end!")
end)
définirSeekingPermissions
setSeekingPermissions(permissions : table )
Accorde des permissions en fonction de l'événement et des groupes et rôles spécifiques et/ou dans lesquels ils se trouvent.Voir rechercher et changer de scènes pour plus d'informations.
getCurrentSceneEnvironnement
getCurrentSceneEnvironment(): Folder (YIELDS)
Retourne le dossier environnement du côté client ou du côté serveur de la scène actuelle, en fonction de savoir s'il est appelé à partir du script de schéma client ou du script de schéma serveur respectivement.
Schéma client
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local clientEnvironment
local serverEnvironment
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
-- Environnements de scène d'accès ; ne s'applique pas au mode en ligne
clientEnvironment = EventSequencer.getCurrentSceneEnvironment()
serverEnvironment = EventSequencer.getCurrentServerEnvironmentFromClient()
print("Current time is:", timePositionObject.Value)
end
Schéma du serveur
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local serverEnvironment
local partColorConnection
local changePartColorEvent = script.Parent.Events.ChangePartColor
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Server)")
serverEnvironment = EventSequencer.getCurrentSceneEnvironment()
partColorConnection = changePartColorEvent.OnServerEvent:Connect(function(player, changedPart, newColor)
serverEnvironment.changedPart.Color = newColor
end)
end
obtenir l'environnement du serveur actuel depuis le client
getCurrentServerEnvironmentFromClient(): Folder (YIELDS)
Renvoie le dossier serveur environnement de la scène actuelle.Contrairement à getCurrentSceneEnvironment, vous pouvez l'appeler depuis le script du schéma client.
Schéma client
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local clientEnvironment
local serverEnvironment
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
-- Environnements de scène d'accès ; ne s'applique pas au mode en ligne
clientEnvironment = EventSequencer.getCurrentSceneEnvironment()
serverEnvironment = EventSequencer.getCurrentServerEnvironmentFromClient()
print("Current time is:", timePositionObject.Value)
end
charge la scène
est en cours de chargement de la scène : boolean
Appelé par le serveur pour savoir si une scène est en cours de chargement.
Scénario
local ReplicatedStorage = game:GetService("ReplicatedStorage")local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))print(EventSequencer.isLoadingScene())while EventSequencer.isLoadingScene() dotask.wait()endprint("Scene loaded")
Événements
avertissement de fin de scène pour client
Feux sur le client avant que la scène ne soit sur le point de se terminer.Le temps par défaut est de 3 secondes, mais vous pouvez le configurer via setSceneWarningTime.Cet événement ne peut être connecté qu'en LocalScript .
Lecteur localScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Détecter quand la scène est sur le point de se terminer (du côté du client)
EventSequencer.onSceneEndingWarningForClient:Connect(function()
warn("Scene is about to end!")
end)
onSceneEndingWarningForServer pour le serveur
Feux sur le serveur avant que la scène ne soit sur le point de se terminer.Le temps par défaut est de 3 secondes, mais vous pouvez le configurer via setSceneWarningTime.Cet événement ne peut être connecté qu'en Script .
Scénario
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Détecter quand la scène est sur le point de se terminer (côté serveur)
EventSequencer.onSceneEndingWarningForServer:Connect(function()
warn("Scene is about to end!")
end)
sur sceneLoadedForClient
Feux sur le client lorsque la scène démarre. Cet événement ne peut être connecté qu'en LocalScript.
Lecteur localScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Détecter quand la scène commence (du côté du client)
EventSequencer.onSceneLoadedForClient:Connect(function()
warn("Scene is starting!")
end)
sur l'orchestration terminée
Feux sur le serveur lorsqu'une scène a atteint sa durée temps et qu'elle s'est effectivement terminée.Cet événement reçoit un argument de nom de chaîne endedSceneName pour la scène qui vient de se terminer et vous pouvez relier cet événement à conditionnellement charger une autre scène .Ne peut être connecté qu'en Script .
Scénario
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Déterminez la scène suivante à charger lorsque la scène actuelle se termine
EventSequencer.onOrchestrationFinished:Connect(function(endedSceneName)
if endedSceneName == "PreShow" then
-- « Prémontrer » terminé ; chargez la première scène du concert
EventSequencer.loadScene("Track1")
elseif endedSceneName == "Track1" then
-- « Track1 » est terminé ; chargez la deuxième scène dans le concert
EventSequencer.loadScene("Track2")
else
-- Retour en boucle sur la scène avant le spectacle
EventSequencer.loadScene("PreShow")
end
end)