RunService

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable
Servicio
No replicado

RunService contiene métodos y eventos para la gestión del tiempo, así como para la gestión del contexto en el que se ejecuta una experiencia o un script.Métodos como IsClient() , IsServer() y IsStudio() pueden ayudarte a determinar bajo qué código de contexto se está ejecutando.Estos métodos son útiles para ModuleScripts que pueden ser requeridos por tanto por los scripts del cliente como del servidor.Además, IsStudio() se puede utilizar para agregar comportamientos especiales para las pruebas en el estudio.

RunService también alberga eventos que permiten que tu código se adhiera al bucle de marco por marco de Roblox, como PreRender , PreAnimation , PreSimulation , PostSimulation y Heartbeat .Seleccionar el evento adecuado para usar en cualquier caso es importante, por lo que debe leer Programador de tareas para tomar una decisión informada.

Resultados de prueba de contexto

<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:IsEdit()|IsEdit</code></th>
<th><code>Class.RunService:Está corriendo()|Está corriendo</code></th>
<th><code>Class.RunService:IsRunMode()|IsRunMode</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>Jugador en vivo</td><td><code>falso</code></td><td><code>verdadero</code></td><td><code>falso</code></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Servidor en vivo</td><td><code>falso</code></td><td><code>falso</code> ></td><td><code>verdadero</code> ></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Modo de edición</td>
<td><code>cierto</code></td>
<td><code>cierto</code></td>
<td><code>cierto</code></td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Edición colaborativa</td>
<td><code>cierto</code></td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Modo ejecutar</td>
<td><code>cierto</code></td>
<td><code>cierto</code></td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
<td><code>cierto</code></td>
<td><code>cierto</code></td>
</tr>
<tr>
<td>Modo de juego (cliente)</td>
<td><code>cierto</code></td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Modo de juego (servidor)</td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
<td><code>cierto</code></td>
<td><code>cierto</code></td>
</tr>
<tr>
<td>Prueba de equipo (jugador)</td>
<td><code>cierto</code></td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Prueba en equipo (servidor)</td>
<td><code>falso</code></td>
<td><code>falso</code></td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
<td><code>cierto</code></td>
<td><code>falso</code></td>
</tr>
</tbody>
Entorno

Resumen

Propiedades

Métodos

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

    Dada una nombre de cadena de una función y una prioridad, este método vincula la función a RunService.PreRender.

  • Escribir paralelo

    Devuelve si el entorno actual se está ejecutando en el cliente.

  • Seguridad del plugin
    Escribir paralelo

    Devuelve si el entorno actual está en modo Edit .

  • Escribir paralelo

    Devuelve si el botón Ejecutar se ha presionado para ejecutar la simulación en Studio.

  • Devuelve si la experiencia está actualmente en ejecución.

  • Escribir paralelo

    Devuelve si el entorno actual se está ejecutando en el servidor.

  • Escribir paralelo

    Devuelve si el entorno actual se está ejecutando en Studio.

  • Pause():()
    Seguridad del plugin

    Pausa la simulación de la experiencia si está en ejecución, suspendiendo la física y los scripts.

  • Run():()
    Seguridad del plugin

    Ejecuta la simulación del juego, ejecutando física y scripts.

  • Stop():()
    Seguridad del plugin

    Detiene la simulación de la experiencia si se está ejecutando.

  • Desvincula una función que estaba vinculada al bucle de renderizado usando RunService:BindToRenderStep() .

Eventos

Propiedades

ClientGitHash

Solo lectura
No replicado
Seguridad de scripts Roblox
Leer paralelo
No replicado
Seguridad del plugin
Leer paralelo

Métodos

BindToRenderStep

()

La función BindToRenderStep() vincula una función personalizada para ser llamada en un momento específico durante el paso de renderizado.Hay tres argumentos principales: name , priority , y qué function llamar.

Como está vinculado al proceso de renderizado del cliente, BindToRenderStep() solo se puede llamar al cliente.

Nombre

El parámetro name es una etiqueta para el enlace y se puede usar con RunService:UnbindFromRenderStep() si el enlace ya no es necesario.


local RunService = game:GetService("RunService")
local function functionToBind() end
-- Vincula la función anterior a la vinculación llamada "tempBinding"
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- Desvincular la función vinculada a "tempBinding"
RunService:UnbindFromRenderStep("tempBinding")
Prioridad

El priority de la vinculación es un entero; determina cuándo durante el paso de renderizado llamar la función personalizada.Cuanto menor sea este número, más pronto se llamará la función personalizada.Si dos atajos tienen la misma prioridad, el motor de Roblox elegirá aleatoriamente uno para ejecutarse primero.Los scripts de control predeterminados de Roblox se ejecutan con estas prioridades específicas:

  • Entrada del jugador: 100
  • Controles de cámara: 200 Por conveniencia; el enumerado Enum.RenderPriority se puede usar para determinar el valor entero para establecer un enlace.Por ejemplo, para hacer un derecho de enlace antes de la actualización predeterminada de la cámara, simplemente resta 1 del nivel de prioridad de la cámara.

Al usar Enum.RenderPriority, recuerde usar .Value al final del enum deseado. RunService:BindToRenderStep() no funcionará si solo se usa el enum por sí en posesión.


local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- El código aquí se ejecutará antes del scriptde cámara predeterminado de Roblox
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
Función personalizada y tiempo delta

El último argumento ( function ) es la función personalizada para llamar.Esta función se pasará un parámetro llamado deltaTime que muestra cuánto tiempo pasó entre el comienzo del paso de renderizado anterior y el comienzo del paso de renderizado actual.

Todas las actualizaciones de renderizado esperarán hasta que el código en el paso de renderizado termine.Asegúrate de que cualquier código llamado por BindToRenderStep() se ejecute rápida y eficientemente; si el código tarda demasiado, los visuales de la experiencia serán choppy.

Parámetros

name: string

Etiqueta para el enlace que se puede utilizar con Unbind si el enlace ya no es necesario.

Valor predeterminado: ""
priority: number

Prioridad del enlace como entero; determina cuándo durante el paso de renderizado llamar la función personalizada.Cuanto menor sea este número, más pronto se llamará la función personalizada.Si dos atajos tienen la misma prioridad, el motor de Roblox elegirá aleatoriamente uno para ejecutarse primero.

Valor predeterminado: ""
function: function

La función personalizada que se está vinculando.

Valor predeterminado: ""

Devuelve

()

Muestras de código

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

Escribir paralelo

Si el código que invocó este método se está ejecutando en un contexto de cliente (en un LocalScript , en un ModuleScript requerido por un LocalScript , o en un Script con RunContext establecido a Enum.RunContext.Client ), este método devolverá true .En todos los demás casos, este método devolverá false .

Si este método devuelve true , el entorno actual puede acceder a funciones solo para clientes como RunService.PreRender o Players.LocalPlayer .


Devuelve

Si el entorno actual está ejecutando el cliente.

IsEdit

Seguridad del plugin
Escribir paralelo

Este método devuelve si el entorno actual está en modo "editar", por ejemplo, en Studio cuando la experiencia no se está ejecutando.

IsEdit() devolverá lo contrario de IsRunning(), excepto cuando la simulación se haya pausado, en cuyo caso ambos métodos devolverán false .


Devuelve

Si el entorno actual está en modo "editar".

IsRunMode

Escribir paralelo

Este método devuelve si el botón Ejecutar se ha presionado para ejecutar la simulación en Studio.Seguirá devolviendo true si la simulación se ha pausado usando el botón Pausar ; sin embargo, una vez que se haya detenido usando el botón Detener , volverá a devolver false .

Tenga en cuenta que Studio solo entra en modo "ejecutar" cuando se presiona el botón Ejecutar , no el botón Reproducir .Tenga en cuenta también que este método devolverá false si la simulación se inició usando RunService:Run() en lugar del botón Ejecutar .


Devuelve

Si el botón Ejecutar se ha presionado para ejecutar la simulación en Studio.

IsRunning

Devuelve si la experiencia se está ejecutando actualmente, lo que significa que la simulación se ha ejecutado usando los botones Ejecutar o Jugar .

IsRunning() siempre devolverá lo contrario de IsEdit() excepto cuando la simulación se haya pausado, en cuyo caso ambos métodos devolverán false .


Devuelve

Si la experiencia se está ejecutando actualmente.

IsServer

Escribir paralelo

Este método devuelve si el entorno actual se está ejecutando en el servidor.Si el código que invocó este método se está ejecutando en un contexto de servidor (en un Script con RunContext establecido a Enum.RunContext.Server o Enum.RunContext.Legacy , o en un ModuleScript requerido por un Script ), este método devolverá true .En todos los demás casos, este método devolverá false .

Si esta función devuelve verdadero, entonces el entorno actual puede acceder a características solo del servidor como ServerStorage o ServerScriptService .


Devuelve

Si el entorno actual se está ejecutando en el servidor.

IsStudio

Escribir paralelo

Este método devuelve si el entorno actual se está ejecutando en Studio. Se puede usar para envolver el código que solo debe ejecutarse al probar en Studio.


Devuelve

Si el entorno actual se está ejecutando en Studio.

Pause

()
Seguridad del plugin

Este método pausa la simulación de la experiencia si está en ejecución, suspendiendo la física y los scripts.La simulación se puede iniciar utilizando Run() o el botón Ejecutar en Studio; cuando la simulación se pausa, IsRunning() devolverá false .


Devuelve

()

Run

()
Seguridad del plugin

Este método ejecuta la simulación de la experiencia (física y scripts).Cuando la simulación esté en ejecución, IsRunning() devolverá true .Sin embargo, IsRunMode() solo devolverá true si la simulación se inició usando el botón Ejecutar en Studio.


Devuelve

()

Stop

()
Seguridad del plugin

Este método detiene la simulación de la experiencia si se está ejecutando.Cuando la simulación se detiene, IsRunning() devolverá false y IsEdit() devolverá true .

En contraste con el botón Detener en Studio, llamar a este método no restaurará la experiencia al estado en que se encontraba antes de que se ejecutarla simulación.Esto significa que cualquier cambio realizado a la experiencia por la simulación de físicas y scripts persistirá después de que la simulación haya terminado.


Devuelve

()

UnbindFromRenderStep

()

Dada una función de nombre enviada a BindToRenderStep() , este método desvinculará la función de ser llamada durante PreRender .Esto se usa para desvincular las funciones vinculadas una vez que ya no se necesitan o cuando ya no necesitan disparar cada paso.

Si no hay función vinculada por el nombre dado, este método no toma ninguna acción y continúa sin levantar un error.

Parámetros

name: string

El nombre de la función que se está desvinculando.

Valor predeterminado: ""

Devuelve

()

Eventos

Heartbeat

El evento Heartbeat se activa en cada marco, después de que la simulación de física se haya completado.El argumento deltaTime indica el tiempo que ha transcurrido desde el marco anterior.

Este evento es cuando la mayoría de los scripts se ejecutar.Ocurre al final de cada marco y también es cuando se ejecutan cualquier script de espera, como los programados con la biblioteca task. Heartbeat se usa comúnmente para tareas periódicas, como actualizar sistemas de juego principales como la regeneración de salud.

Después de este paso, el motor envía actualizaciones de propiedad y eventos al servidor o a los clientes que se reciben más tarde como parte del paso de replicación.

Parámetros

deltaTime: number

El tiempo (en segundos) que ha transcurrido desde el marco anterior.


PostSimulation

El evento PostSimulation se activa en cada marco, después de que la simulación de física se haya completado.El argumento deltaTimeSim indica el tiempo que el marco actual ha acelerado la simulación de física, sin tener en cuenta la limitación de la física.

Este evento es útil para hacer ajustes finales al resultado de la simulación. Tras esta fase, el motor activa el evento Heartbeat.

Parámetros

deltaTimeSim: number

El tiempo (en segundos) que el marco actual ha acelerado la simulación de física, sin tener en cuenta la limitación de la física.


PreAnimation

El evento PreAnimation se activa en cada marco, antes de la simulación de físicas pero después de renderizar.El argumento deltaTimeSim indica el tiempo que el marco actual tiene animaciones de paso.

Este evento es útil para modificar objetos de animación, como ajustar su velocidad o prioridad.Una vez que el evento PreAnimation termine, el motor procede a ejecutar estas animaciones, actualizando las transformaciones conjuntas que se usarán más tarde para actualizar objetos durante la simulación de física.

Después de que las animaciones se pasen, el motor activa el evento PreSimulation.

Parámetros

deltaTimeSim: number

El tiempo (en segundos) que el marco actual tiene animaciones de paso.


PreRender

El evento PreRender (reemplazo de RenderStepped ) se activa cada marco, antes de que se renderice el marco.El argumento deltaTimeRender indica el tiempo que ha transcurrido desde el marco anterior.

Este evento te permite ejecutar código y actualizar el mundo antes de que se dibuje en la pantalla de un jugador.Esto es útil para ajustes de última hora como cambiar las posiciones de los objetos, actualizar animaciones o preparar efectos visuales, pero debe usarse con moderación ya que el motor no puede comenzar a renderizar el marco hasta que el código que se ejecuta en este evento haya terminado de ejecutarse.

Como PreRender es del lado del cliente, solo se puede usar en un LocalScript , en un ModuleScript requerido por un LocalScript , o en un Script con RunContext establecido a Enum.RunContext.Client .

Después de la fase PreRender, la fase de simulación comienza con el evento PreAnimation.

Parámetros

deltaTimeRender: number

El tiempo (en segundos) que ha transcurrido desde el marco anterior.


PreSimulation

El evento PreSimulation (reemplazo de Stepped ) se activa cada marco, antes de la simulación de física.El argumento deltaTimeSim indica el tiempo que el marco actual pasará la simulación de física, sin tener en cuenta la limitación de la física.

Este evento es útil para ajustar propiedades como velocidad o fuerzas justo antes de que se apliquen como parte de la simulación.Luego se ejecuta la simulación, potencialmente varias veces, ya que el solucionador de física se ejecuta con una mayor frecuencia que otros sistemas de motor.Una vez que esto esté completo, se activa el evento PostSimulation.

Parámetros

deltaTimeSim: number

El tiempo (en segundos) que el marco actual pasará la simulación de física, sin tener en cuenta la limitación de la física.


RenderStepped

Dispara cada marco, antes de que se renderice el marco.

Nota de migración

Este evento ha sido sustituido por PreRender que debe usarse para el nuevo trabajo.

Parámetros

deltaTime: number

El tiempo (en segundos) que ha transcurrido desde el marco anterior.


Stepped

Dispara cada marco, antes de la simulación de físicas.

Nota de migración

Este evento ha sido sustituido por PreSimulation que debe usarse para el nuevo trabajo.

Parámetros

time: number

La duración (en segundos) que RunService ha estado funcionando durante.

deltaTime: number

El tiempo (en segundos) que ha transcurrido desde el marco anterior.