RunService

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Création impossible
Service
Non répliqué

RunService contient des méthodes et des événements pour la gestion du temps ainsi que pour la gestion du contexte dans lequel une expérience ou un script s'exécute.Des méthodes comme IsClient() , IsServer() et IsStudio() peuvent vous aider à déterminer dans quel contexte le code s'exécute.Ces méthodes sont utiles pour ModuleScripts qui peuvent être requises par les scripts du client et du serveur.De plus, IsStudio() peut être utilisé pour ajouter des comportements spéciaux pour les tests dans Studio.

RunService abrite également des événements qui permettent à votre code de respecter la boucle de boucle de cadre de Roblox, tels que PreRender , PreAnimation , PreSimulation , PostSimulation et Heartbeat .Sélectionner l'événement approprié à utiliser dans n'importe quel cas est important, vous devez donc lire calendrier de tâches pour prendre une décision informée.

Résultats du test de contexte

<th><code>Class.RunService:IsStudio()|IsStudio</code></th>
<th><code>Class.RunService:IsClient()|IsClient</code></th>
<th><code>Class.RunService:IsServer()|IsServer</code></th>
<th><code>Class.RunService:Est-il modifiable()|IsEdit</code></th>
<th><code>Class.RunService: est en cours d'exécution()|IsRunning</code></th>
<th><code>Class.RunService:IsRunMode()|IsRunMode</code></th>
</tr>
</thead>
<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 (joueur)</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>
Milieu

Résumé

Propriétés

Méthodes

  • BindToRenderStep(name : string,priority : number,function : function):()

    Donné un nom de chaîne d'une fonction et une priorité, cette méthode lie la fonction à RunService.PreRender .

  • Écrire en parallèle

    Renvoie si l'environnement actuel est exécuté sur le client.

  • Sécurité des plugins
    Écrire en parallèle

    Renvoie si l'environnement actuel est en mode Edit .

  • Écrire en parallèle

    Renvoie si le bouton Exécuter a été appuyé pour exécuter la simulation dans Studio.

  • Renvoie si l'expérience est actuellement en cours d'exécution.

  • Écrire en parallèle

    Renvoie si l'environnement actuel est exécuté sur le serveur.

  • Écrire en parallèle

    Renvoie si l'environnement actuel est exécuté dans Studio.

  • Pause():()
    Sécurité des plugins

    Pause la simulation de l'expérience si elle est en cours d'exécution, en suspendant la physique et les scripts.

  • Run():()
    Sécurité des plugins

    Exécute la simulation du jeu, exécute la physique et les scripts.

  • Stop():()
    Sécurité des plugins

    Arrête la simulation de l'expérience si elle fonctionne.

  • Dé relie une fonction qui était liée à la boucle de rendu en utilisant RunService:BindToRenderStep() .

Évènements

Propriétés

ClientGitHash

Lecture uniquement
Non répliqué
Sécurité des scripts Roblox
Lecture parallèle
Non répliqué
Sécurité des plugins
Lecture parallèle

Méthodes

BindToRenderStep

()

La fonction BindToRenderStep() lie une fonction personnalisée à être appelée à un moment spécifique pendant l'étape de rendu.Il y a trois arguments principaux : name , priority , et ce que function 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 lien et peut être utilisé avec RunService:UnbindFromRenderStep() si le lien n'est plus nécessaire.


local RunService = game:GetService("RunService")
local function functionToBind() end
-- Lier la fonction ci-dessus à la binding nommée « tempBinding »
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- Débindage de la fonction liée à "tempBinding"
RunService:UnbindFromRenderStep("tempBinding")
Priorité

Le priority de la fixation est un entier ; il détermine quand pendant l'étape de rendu d'appeler la fonction personnalisée.Plus ce nombre est bas, plus rapidement la fonction personnalisée sera appelée.Si deux liens ont la même priorité, le moteur Roblox choisira aléatoirement l'un d'entre eux pour s'exécuter en premier.Les scripts de contrôle Roblox par défaut s'exécutent avec ces priorités spécifiques :

  • Entrée du joueur : 100
  • Contrôles de la caméra : 200 Pour commodité ; l'enumérité Enum.RenderPriority peut être utilisée pour déterminer la valeur entière pour définir une valeur de binding.Par exemple, pour faire un droit de liage avant la mise à jour de la caméra par défaut, soustrayez simplement 1 du niveau de priorité de la caméra.

Lors de l'utilisation de Enum.RenderPriority, n'oubliez pas d'utiliser .Value à la fin de l'Enum désiré. RunService:BindToRenderStep() ne fonctionnera pas si seulement l'Enum est utilisé 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'argument dernier ( function ) est la fonction personnalisée à appeler.Cette fonction sera passée un paramètre appelé deltaTime qui montre combien de temps s'est écoulé entre le début de l'étape de rendu précédente et le début de l'étape de rendu actuelle.

Toutes les mises à jour de rendu attendront jusqu'à ce que le code dans l'étape de rendu se termine.Assurez-vous que tout code appelé par BindToRenderStep() s'exécute rapidement et efficacement ; si le code prend trop de temps, les visuels d'expérience seront choppy.

Paramètres

name: string

Étiquette pour le lien qui peut être utilisé avec Unbind si le lien n'est plus nécessaire.

Valeur par défaut : ""
priority: number

Priorité de la binding en tant qu'entier ; il détermine quand pendant l'étape de rendu d'appeler la fonction personnalisée.Plus ce nombre est bas, plus rapidement la fonction personnalisée sera appelée.Si deux liens ont la même priorité, le moteur Roblox choisira aléatoirement l'un d'entre eux pour s'exécuter en premier.

Valeur par défaut : ""
function: function

La fonction personnalisée est liée.

Valeur par défaut : ""

Retours

()

Échantillons de code

This code sample moves a GuiObject in a circle within its parent object using RunService's BindToRenderStep. It defines a parametric equation in a function to help with positioning the GuiObject.

To try this code out, put a ScreenGui in the StarterGui. Inside the ScreenGui, insert a Frame with a LocalScript. Paste this code into the LocalScript, then play the game. Watch the Frame travel counterclockwise within.

Frame Moving in Circle

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

This example shows how to bind a simple function to the render step. All this function does is print how much time passed between the last render step and the current one. Note that this code will need to be in a LocalScript to run.

RunService Custom Function

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)

This example uses the RunService to bind and unbind a function named printHello. First, we bind the function to the RenderStep so that fires every step. Then, after we wait 5 seconds (wait(5)), we unbind the function.

Bind and Unbind a Function

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

Écrire en parallèle

Si le code qui a invoqué cette méthode s'exécute dans un contexte client (dans un LocalScript , dans un ModuleScript requis par un LocalScript , ou dans un Script avec RunContext défini à Enum.RunContext.Client ), cette méthode retournera true .Dans tous les autres cas, cette méthode renverra false .

Si cette méthode renvoie true , l'environnement actuel peut accéder à des fonctionnalités réservées aux clients comme RunService.PreRender ou Players.LocalPlayer .


Retours

Si l'environnement actuel exécute le client.

IsEdit

Sécurité des plugins
Écrire en parallèle

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 l'inverse de IsRunning(), sauf lorsque la simulation a été interrompue, auquel cas les deux méthodes retourneront false .


Retours

Si l'environnement actuel est en mode « modifier».

IsRunMode

Écrire en parallèle

Cette méthode renvoie si le bouton Exécuter a été pressé pour exécuter la simulation dans Studio.Il continuera à retourner true si la simulation a été interrompue en utilisant le bouton Pause ; cependant, une fois qu'elle a été arrêtée en utilisant le bouton Arrêter , elle reviendra à retourner false .

Notez que Studio entre seulement en mode « lancer» lorsque le bouton Exécuter est pressé, et non le bouton Jouer .Notez également que cette méthode renverra false si la simulation a été démarrée en utilisant RunService:Run() plutôt que le bouton Exécuter .


Retours

Si le bouton Exécuter a été appuyé pour exécuter la simulation dans Studio.

IsRunning

Renvoie si l'expérience est actuellement en cours d'exécution, ce qui signifie que la simulation a été exécutée en utilisant les boutons Exécuter ou Jouer .

IsRunning() retournera toujours l'inverse de IsEdit() sauf lorsque la simulation a été interrompue, auquel cas les deux méthodes retourneront false .


Retours

Si l'expérience est actuellement en cours d'exécution.

IsServer

Écrire en parallèle

Cette méthode renvoie si l'environnement actuel est exécuté sur le serveur.Si le code qui a invoqué cette méthode s'exécute dans un contexte de serveur (dans un Script avec RunContext défini sur Enum.RunContext.Server ou Enum.RunContext.Legacy , ou dans un ModuleScript requis par un Script ), cette méthode retournera true .Dans tous les autres cas, cette méthode renverra false .

Si cette fonction renvoie true, l'environnement actuel peut accéder à des fonctionnalités serveur uniquement comme ServerStorage ou ServerScriptService .


Retours

Si l'environnement actuel est exécuté sur le serveur.

IsStudio

Écrire en parallèle

Cette méthode renvoie si l'environnement actuel est exécuté dans Studio. Elle peut être utilisée pour envelopper du code qui ne doit être exécuté que lors des tests dans Studio.


Retours

Si l'environnement actuel est exécuté dans Studio.

Pause

()
Sécurité des plugins

Cette méthode met en pause la simulation de l'expérience si elle est en cours d'exécution, en suspendant la physique et les scripts.La simulation peut être lancée en utilisant Run() ou le bouton Exécuter dans Studio ; lorsque la simulation est interrompue, IsRunning() retournera false .


Retours

()

Run

()
Sécurité des plugins

Cette méthode exécute la simulation de l'expérience (physique et scripts).Lorsque la simulation est en cours d'exécution, IsRunning() retournera true .Cependant, IsRunMode() ne retournera que true si la simulation a été démarrée en utilisant le bouton Exécuter dans Studio.


Retours

()

Stop

()
Sécurité des plugins

Cette méthode arrête la simulation de l'expérience si elle fonctionne.Lorsque la simulation est arrêtée, IsRunning() retournera false et IsEdit() retournera true .

En contraste avec le bouton Arrêter dans Studio, l'appel de cette méthode ne restaurera pas l'expérience à l'état dans lequel elle se trouvait avant que la simulation ne soit lancer.Cela signifie que toutes les modifications apportées à l'expérience par la simulation physique et les scripts persisteront après la fin de la simulation.


Retours

()

UnbindFromRenderStep

()

Donné un nom d'une fonction envoyée à BindToRenderStep() , cette méthode désattachera la fonction d'être appelée pendant PreRender .Cela est utilisé pour désolidariser les fonctions liées une fois qu'elles ne sont plus nécessaires, ou lorsqu'elles n'ont plus besoin de déclencher chaque étape.

S'il n'y a pas de fonction liée par le nom donné, cette méthode ne prend aucune action et se poursuit sans élever une erreur.

Paramètres

name: string

Le nom de la fonction étant désolidarisée.

Valeur par défaut : ""

Retours

()

Évènements

Heartbeat

L'événement Heartbeat se déclenche à chaque cadre, après que la simulation physique ait terminé.L'argument deltaTime indique le temps écoulé depuis le cadre précédent.

Cet événement est quand la plupart des scripts s'exécutent.Il se produit à la fin de chaque cadre et c'est aussi quand les scripts d'attente sont exécutés, comme ceux programmés avec la bibliothèque task.Heartbeat est couramment utilisé pour les tâches périodiques, telles que la mise à jour des systèmes de jeu principaux comme la régénération de la santé.

Après cette étape, le moteur envoie des mises à jour de propriété et des événements au serveur ou aux clients qui sont ensuite reçus comme partie de l'étape de réception de la réplication.

Paramètres

deltaTime: number

Le temps (en secondes) écoulé depuis le cadre précédent.


PostSimulation

L'événement PostSimulation se déclenche à chaque cadre, après que la simulation physique ait terminé.L'argument deltaTimeSim indique le temps auquel le cadre actuel a effectué la simulation de physique, sans tenir compte du ralentissement de la physique.

Cet événement est utile pour effectuer des ajustements finaux du résultat de la simulation. Après cette phase, le moteur déclenche l'événement Heartbeat.

Paramètres

deltaTimeSim: number

Le temps (en secondes) que le cadre actuel a fait passer la simulation physique, sans tenir compte du ralentissement de la physique.


PreAnimation

L'événement PreAnimation se déclenche à chaque cadre, avant la simulation physique mais après le rendu.L'argument deltaTimeSim indique le temps auquel la fenêtre actuelle a fait des animations d'arrêt.

Cet événement est utile pour modifier des objets d'animation, comme ajuster leur vitesse ou leur priorité.Une fois l'événement PreAnimation terminé, le moteur procède à l'exécution de ces animations, mettant à jour les transformations jointes qui seront utilisées plus tard pour mettre à jour les objets pendant la simulation physique.

Une fois les animations terminées, le moteur déclenche l'événement PreSimulation.

Paramètres

deltaTimeSim: number

Le temps (en secondes) que l'animation de cadre actuelle a franchi.


PreRender

L'événement PreRender (remplacement pour RenderStepped) déclenche chaque cadre, avant que le cadre ne soit rendu.L'argument deltaTimeRender indique le temps écoulé depuis le cadre précédent.

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.Cela est utile pour les ajustements de dernière minute tels que le changement de la position des objets, la mise à jour des animations ou la préparation des effets visuels, mais il doit être utilisé de manière parcimonieuse car le moteur ne peut pas commencer à rendre le cadre jusqu'à ce que le code s'exécute dans cet événement ait terminé.

Comme PreRender est côté client, il ne peut être utilisé qu'en LocalScript , dans un ModuleScript requis par un LocalScript , ou dans un Script avec RunContext défini sur Enum.RunContext.Client .

Après la phase PreRender, la phase de simulation commence avec l'événement PreAnimation.

Paramètres

deltaTimeRender: number

Le temps (en secondes) écoulé depuis le cadre précédent.


PreSimulation

L'événement PreSimulation (remplacement de Stepped) déclenche chaque cadre, avant la simulation physique.L'argument deltaTimeSim indique le temps auquel le cadre actuel effectuera la simulation de physique, sans tenir compte du ralentissement de la physique.

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 en tant que partie de la simulation.La simulation s'exécute ensuite, potentiellement plusieurs fois, car le solveur de physique fonctionne à une fréquence plus élevée que les autres systèmes d'engine.Une fois cela terminé, l'événement PostSimulation est déclenché.

Paramètres

deltaTimeSim: number

Le temps (en secondes) que le cadre actuel effectuera la simulation de physique, sans tenir compte du ralentissement de la physique.


RenderStepped

Lance chaque cadre, avant que le cadre ne soit rendu.

Note de migration

Cet événement a été remplacé par PreRender qui doit être utilisé pour le nouveau travail.

Paramètres

deltaTime: number

Le temps (en secondes) écoulé depuis le cadre précédent.


Stepped

Lance chaque cadre, avant la simulation physique.

Note de migration

Cet événement a été remplacé par PreSimulation qui doit être utilisé pour le nouveau travail.

Paramètres

time: number

La durée (en secondes) pendant laquelle RunService a fonctionné.

deltaTime: number

Le temps (en secondes) écoulé depuis le cadre précédent.