RunService
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
RunService contient des méthodes et des événements pour la gestion du temps ainsi que pour la gestion du contexte dans le
RunService héberge également des événements qui permettent à votre code d'adhérer au boucle de raccordement de Roblox, t
Résultats du test contextuel
<tbody><tr><td>Joueur en direct</td><td><code>faux</code></td><td><code>vrai</code></td><td><code>faux</code></td><td /><td /><td /></tr><tr><td>Serveur en direct</td><td><code>faux</code></td><td><code>faux</code></td><td><code>vrai</code></td><td /><td /><td /></tr><tr><td>Mode d'édition</td><td><code>vrai</code></td><td><code>vrai</code></td><td><code>vrai</code></td><td><code>vrai</code></td><td><code>faux</code></td><td><code>faux</code></td></tr><tr><td>Édition collaborative</td><td><code>vrai</code></td><td><code>vrai</code></td><td><code>faux</code></td><td><code>vrai</code></td><td><code>faux</code></td><td><code>faux</code></td></tr><tr><td>Mode d'exécution</td><td><code>vrai</code></td><td><code>vrai</code></td><td><code>vrai</code></td><td><code>faux</code></td><td><code>vrai</code></td><td><code>vrai</code></td></tr><tr><td>Mode de jeu (Client)</td><td><code>vrai</code></td><td><code>vrai</code></td><td><code>faux</code></td><td><code>faux</code></td><td><code>vrai</code></td><td><code>faux</code></td></tr><tr><td>Mode de jeu (serveur)</td><td><code>vrai</code></td><td><code>faux</code></td><td><code>vrai</code></td><td><code>faux</code></td><td><code>vrai</code></td><td><code>vrai</code></td></tr><tr><td>Test d'équipe (Player)</td><td><code>vrai</code></td><td><code>vrai</code></td><td><code>faux</code></td><td><code>faux</code></td><td><code>vrai</code></td><td><code>faux</code></td></tr><tr><td>Test d'équipe (serveur)</td><td><code>faux</code></td><td><code>faux</code></td><td><code>vrai</code></td><td><code>faux</code></td><td><code>vrai</code></td><td><code>faux</code></td></tr></tbody>
Résumé
Propriétés
Méthodes
Donné un nom de chaîne d'une fonction et d'une priorité, ce méthode lie la fonction à RunService.PreRender .
Renvoie si l'environnement actuel s'exécute sur le client.
Retourne si l'environnement actuel est en mode Edit.
Retourne si le bouton courir a été pressé pour exécuter la simulation dans Studio.
Renvoie si l'expérience s'exécute actuellement.
Retourne si l'environnement actuel s'exécute sur le serveur.
Renvoie si l'environnement actuel s'exécute dans Studio.
Suspend la simulation de l'expérience si elle s'exécute, suspend la physique et les scripts.
Exécute la simulation du jeu, exécute la physique et les scripts.
Arrête la simulation de l'expérience si elle s'exécute.
Définie une fonction qui était liée au rendu en utilisant RunService:BindToRenderStep() .
Évènements
Tire chaque cadre, après que la simulation de physique soit terminée.
Tire chaque cadre, après que la simulation de physique soit terminée.
Tire chaque cadre, avant la simulation de physique mais après le rendu.
Tire chaque cadre, avant que le cadre soit rendu.
Tire tous les cadres, avant la simulation de physique.
Tire chaque cadre, avant que le cadre soit rendu.
Tire tous les cadres, avant la simulation de physique.
Propriétés
ClientGitHash
RunState
Méthodes
BindToRenderStep
La fonction BindToRenderStep() lie une fonction personnalisée à être appelée à un moment spécifique pendant le rendu. Il y a trois arguments principaux : name, priority, et lequel 1>function1> appeler.
Comme il est lié au processus de rendu du client, BindToRenderStep() ne peut être appelé que sur le client.
Nom
Le paramètre name est une étiquette pour le binding et peut être utilisé avec RunService:UnbindFromRenderStep() si le binding n'est plus nécessaire.
local RunService = game:GetService("RunService")
local function functionToBind() end
-- Liaison de la fonction ci-dessus à la fonction de nom "tempBinding"
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- Désactivez la fonction liée à "tempBinding"
RunService:UnbindFromRenderStep("tempBinding")
Priorité
La priority de la binding est un nombre entier ; il détermine quand pendant le rendu, appeler la fonction personnalisée. Le plus bas de ce nombre détermine quand la fonction personnalisée sera appelée. Si deux binding ont la même priorité, le moteur Roblox choisira aléatoirement le premier pour s'exécuter. Les scripts de contrôle par défaut de Roblox s'exécuteront avec ces priorités spécifiques :
- Entrée du joueur : 100
- Commandes de la caméra : 200 Pour la commodité, l'archive Enum.RenderPriority peut être utilisée pour déterminer la valeur entière à configurer. Par exemple, pour créer un lien juste avant la mise à jour de la caméra par défaut, soustrayez simplement 1 de la niveaude priorité de la caméra.
Lors de l'utilisation de Enum.RenderPriority, n'oubliez pas d'utiliser .Value à la fin de l'enum souhaité. RunService:BindToRenderStep() ne fonctionnera pas si vous n'utilisez que l'enum posséder.
local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- Le code ici s'exécutera avant le script de caméra Roblox par défaut
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
Fonction personnalisée et temps Delta
L' dernier argument ( function ) est la fonction personnalisée à appeler. Cette fonction sera passée un paramètre nommé deltaTime qui montre combien de temps s'est écoulé entre le début du rendu précédent et le début du rendu actuel.
Toutes les mises à jour de rendu attendront que le code dans la étape de rendu finisse. Assurez-vous que tout le code appelé par BindToRenderStep() fonctionne rapidement et efficacement ; si le code prend trop longtemps, les visuels d'expérience seront coupables.
Paramètres
Balise pour le binding qui peut être utilisé avec Unbind si le binding n'est plus nécessaire.
La priorité du lien comme un nombre entier ; il détermine quand pendant le rendu, appeler la fonction personnalisée. Plus ce nombre est bas, plus la fonction personnalisée sera appelée tôt. Si deux liens ont la même priorité, le moteur Roblox choisira aléatoirement l'un pour s'exécuter en premier.
La fonction personnalisée étant liée.
Retours
Échantillons de code
local RunService = game:GetService("RunService")
-- How fast the frame ought to move
local SPEED = 2
local frame = script.Parent
frame.AnchorPoint = Vector2.new(0.5, 0.5)
-- A simple parametric equation of a circle
-- centered at (0.5, 0.5) with radius (0.5)
local function circle(t)
return 0.5 + math.cos(t) * 0.5, 0.5 + math.sin(t) * 0.5
end
-- Keep track of the current time
local currentTime = 0
local function onRenderStep(deltaTime)
-- Update the current time
currentTime = currentTime + deltaTime * SPEED
-- ...and the frame's position
local x, y = circle(currentTime)
frame.Position = UDim2.new(x, 0, y, 0)
end
-- This is just a visual effect, so use the "Last" priority
RunService:BindToRenderStep("FrameCircle", Enum.RenderPriority.Last.Value, onRenderStep)
--RunService.RenderStepped:Connect(onRenderStep) -- Also works, but not recommended
local RunService = game:GetService("RunService")
local function checkDelta(deltaTime)
print("Time since last render step:", deltaTime)
end
RunService:BindToRenderStep("Check delta", Enum.RenderPriority.First.Value, checkDelta)
local RunService = game:GetService("RunService")
-- Step 1: Declare the function and a name
local NAME = "Print Hello"
local function printHello()
print("Hello")
end
-- Step 2: Bind the function
RunService:BindToRenderStep(NAME, Enum.RenderPriority.First.Value, printHello)
-- Step 3: Unbind the function
RunService:UnbindFromRenderStep(NAME)
IsClient
Si le code qui a invoqué cette méthode est exécuté dans un contexte client (dans un LocalScript , dans un ModuleScript requis par un Class.LocalScript
Si cette méthode renvoie true, l'environnement actuel peut accéder à des fonctionnalités client uniquement comme RunService.PreRender ou Players.LocalPlayer.
Retours
Que l'environnement actuel exécute le client.
IsEdit
Cette méthode renvoie si l'environnement actuel est en mode « modifier», par exemple dans Studio lorsque l'expérience n'est pas en cours d'exécution.
IsEdit() retournera le contraire de IsRunning(), sauf lorsque la simulation a été暂停, dans ce cas, les deux méthodes retourneront false.
Retours
Que l'environnement actuel soit en mode « modifier».
IsRunMode
Cette méthode renvoie si le bouton Run a été pressé pour exécuter la simulation dans Studio. Il continuera à renvoyer true si la simulation a été interrompue à l'aide du bouton Pause ; cependant, une fois qu'il a été arrêté à l'aide du bouton 2> Stop2>, il retournera à l'exécution de 5> false5>.
Remarquez que Studio n'entre en mode "lancer" que lorsque le bouton Exécuter est appuyé, non pas le bouton Jouer. Notez également que cette méthode retournera false si la simulation a été démarrée à l'aide de 2> Class.RunService:Run()2> plutôt que le bouton 5>Jouer5>.
Retours
Whether the Exécuter button has been pressed to run the simulation in Studio.
IsRunning
Renvoie si l'expérience s'exécute actuellement, ce qui signifie que la simulation a été exécutée à l'aide des boutons Courir ou Jouer .
IsRunning() retournera toujours le contraire de IsEdit() sauf quand la simulation a été暂停,在此 случае,两方法都会返回 false 。
Retours
Whether l'expérience est actuellement en cours d'exécution.
IsServer
Cette méthode renvoie si l'environnement actuel s'exécute sur le serveur. Si le code qui a invoqué cette méthode s'exécute dans un contexte de serveur (dans
Si cette fonction renvoie vrai, alors l'environnement actuel peut accéder à des fonctionnalités serveur comme ServerStorage ou ServerScriptService.
Retours
Que l'environnement actuel s'exécute sur le serveur.
IsStudio
Cette méthode renvoie si l'environnement actuel s'exécute dans Studio. Il peut être utilisé pour envelopper le code qui ne s'exécute que lors du test dans Studio.
Retours
Que l'environnement actuel s'exécute dans Studio.
Pause
Cette méthode suspend la simulation de l'expérience si elle s'exécute, suspend la physique et les scripts. La simulation peut être activée en utilisant Run() ou le bouton Run dans Studio ; lorsque la simulation est suspendue, IsRunning() renverra 1> false1>.
Retours
Run
Cette méthode exécute la simulation de l'expérience (physique et scripts). Lorsque la simulation est en cours d'exécution, IsRunning() renverra true . Cependant, IsRunMode() ne renverra que 1> true1> si
Retours
Stop
Cette méthode arrête la simulation de l'expérience si elle s'exécute. Lorsque la simulation est arrêtée, IsRunning() retournera false et IsEdit() retournera 1>1> Class.RunService:IsRunService1> .
Contrairement au bouton Arrêter dans Studio, l'appel de cette méthode ne restaurera pas l'expérience à l'état où elle était avant l'lancerde la simulation. Cela signifie que toute modification apportée à l'expérience par la simulation physique et les scripts persistera après la fin de la simulation.
Retours
UnbindFromRenderStep
Donné un nom à une fonction envoyée à BindToRenderStep() , cette méthode va débinder la fonction d'être appelée pendant PreRender . Ceci est utilisé pour débinder les fonctions liées une fois qu'elles ne sont plus nécessaires, ou quand elles ne doivent plus tirer chaque étape.
Si il n'y a pas de fonction liée par le nom donné, cette méthode ne prend pas d'action et continue sans générer d'erreurs.
Paramètres
Le nom de la fonction qui est en train d'être définie.
Retours
Évènements
Heartbeat
L'événement Heartbeat déclenche chaque cadre, après que la simulation de physique soit terminée. L'argument deltaTime indique le temps écoulé depuis le dernier cadre.
Cet événement est lorsque la plupart des scripts s'exécutent. Il se produit à la fin de chaque cadre et il est également lorsque les scripts d'attente sont exécutés, tels que ceux programmés avec la bibliothèque task. Heartbeat est couramment utilisé pour les tâches permanentes, telles que la régénération du noyau du jeu de santé.
En suivant cette étape, le moteur envoie des mises à jour et des événements de propriété sur le serveur ou les clients qui sont ensuite reçus comme une partie de la étape de réplication de réception.
Paramètres
Le temps (en secondes) qui s'est écoulé depuis le cadre précédent.
PostSimulation
L'événement PostSimulation déclenche chaque cadre, après que la simulation de physique soit terminée. L'argument deltaTimeSim indique le temps écoulé depuis le dernier cadre.
Cet événement est utile pour faire des ajustements finaux sur la sortie de la simulation. Après cette phase, le moteur déclenche l'événement Heartbeat.
Paramètres
Le temps (en secondes) qui s'est écoulé depuis le cadre précédent.
PreAnimation
L'événement PreAnimation lance chaque cadre, avant la simulation de physique, mais après le rendu. L'argument deltaTimeSim indique le temps écoulé depuis le cadre précédent.
Cet événement est utile pour modifier les objets d'animation, tels que l'ajustement de leur vitesse ou de leur priorité. Une fois que l'événement PreAnimation est terminé, le moteur exécute ces animations, ce qui met à jour les transformations jointes qui seront ensuite utilisées pour mettre à jour les objets pendant la simulation physique.
Après que les animations sont exécutées, le moteur déclenche l'événement PreSimulation.
Paramètres
Le temps (en secondes) qui s'est écoulé depuis le cadre précédent.
PreRender
L'événement PreRender (équivalent à Class.RunService.RenderStepped|RenderStepped) déclenche chaque cadre, avant que le cadre soit rendu. L'argument deltaTimeRender indique le temps écoulé depuis le dernier cadre.
Cet événement vous permet d'exécuter du code et de mettre à jour le monde avant qu'il ne soit dessiné sur l'écran d'un joueur. Ceci est utile pour les ajustements de dernière minute tels que le changement de positions d'objets, la mise à jour des animations ou la préparation d'effets visuels, mais il doit être utilisé judicieusement car le moteur ne peut pas commencer à rendre le cadre jusqu'à ce que le code s'exécute dans cet événement.
Puisque PreRender est côté client, il ne peut être utilisé que dans un LocalScript , dans un ModuleScript requis par un 2>Class.LocalScript2> , ou dans un 5>Class.Script5> avec 8>Class.BaseScript.RunContext|RunContext
Après la phase PreRender, la phase de simulation commence avec l'événement PreAnimation.
Paramètres
Le temps (en secondes) qui s'est écoulé depuis le cadre précédent.
PreSimulation
L'événement PreSimulation (équivalent à Stepped ) déclenche chaque cadre, avant la simulation de physique. L' argument deltaTimeSim indique le temps écoulé depuis le cadre précédent.
Cet événement est utile pour ajuster des propriétés telles que la vitesse ou les forces juste avant qu'elles ne soient appliquées comme une partie de la simulation. La simulation s'exécute alors, potentiellement plusieurs fois, comme le solvant de physique s'exécute à une fréquence plus élevée que les autres systèmes d'Engine. Une fois cela terminé, l'événement PostSimulation est lancé.
Paramètres
Le temps (en secondes) qui s'est écoulé depuis le cadre précédent.
RenderStepped
L'événement RenderStepped (équivalent à PreRender ) déclenche chaque cadre, avant que le cadre soit rendu. L' argument deltaTime indique le temps écoulé depuis le dernier cadre.
Cet événement vous permet d'exécuter du code et de mettre à jour le monde avant qu'il ne soit dessiné sur l'écran d'un joueur. Ceci est utile pour les ajustements de dernière minute tels que le changement de positions d'objets, la mise à jour des animations ou la préparation d'effets visuels, mais il doit être utilisé judicieusement car le moteur ne peut pas commencer à rendre le cadre jusqu'à ce que le code s'exécute dans cet événement.
Comme RenderStepped est côté client, il ne peut être utilisé que dans un LocalScript , dans un ModuleScript requis par un 1> Class.LocalScript1> , ou dans un 4> Class.Script4> avec
Après la phase RenderStepped, la phase de simulation commence avec l'événement PreAnimation.
Paramètres
Le temps (en secondes) qui s'est écoulé depuis le cadre précédent.
Stepped
L'événement Stepped (équivalent à PreSimulation ) déclenche chaque cadre, avant la simulation de physique. L' argument deltaTime indique le temps écoulé depuis le cadre précédent.
Cet événement est utile pour ajuster des propriétés telles que la vitesse ou les forces juste avant qu'elles ne soient appliquées comme une partie de la simulation. La simulation s'exécute alors, potentiellement plusieurs fois, comme le solvant de physique s'exécute à une fréquence plus élevée que les autres systèmes d'Engine. Une fois cela terminé, l'événement PostSimulation est lancé.
Paramètres
La durée (en secondes) pendant laquelle RunService a été exécuté.
Le temps (en secondes) qui s'est écoulé depuis le cadre précédent.