RunService
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
RunService contiene métodos y eventos para la gestión del tiempo, así como para la gestión del contexto en el que se
RunService también alberga eventos que permiten que su código se adhiera a la cadena de marco de Roblox, como Class
Resultados de la prueba de contexto
<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 Editar</td><td><code>verdadero</code></td><td><code>verdadero</code></td><td><code>verdadero</code></td><td><code>verdadero</code></td><td><code>falso</code></td><td><code>falso</code></td></tr><tr><td>Edición colaborativa</td><td><code>verdadero</code></td><td><code>verdadero</code></td><td><code>falso</code></td><td><code>verdadero</code></td><td><code>falso</code></td><td><code>falso</code></td></tr><tr><td>Modo de ejecución</td><td><code>verdadero</code></td><td><code>verdadero</code></td><td><code>verdadero</code></td><td><code>falso</code></td><td><code>verdadero</code></td><td><code>verdadero</code></td></tr><tr><td>Modo de juego (Cliente)</td><td><code>verdadero</code></td><td><code>verdadero</code></td><td><code>falso</code></td><td><code>falso</code></td><td><code>verdadero</code></td><td><code>falso</code></td></tr><tr><td>Modo de juego (servidor)</td><td><code>verdadero</code></td><td><code>falso</code></td><td><code>verdadero</code></td><td><code>falso</code></td><td><code>verdadero</code></td><td><code>verdadero</code></td></tr><tr><td>Prueba de equipo (jugador)</td><td><code>verdadero</code></td><td><code>verdadero</code></td><td><code>falso</code></td><td><code>falso</code></td><td><code>verdadero</code></td><td><code>falso</code></td></tr><tr><td>Prueba de equipo (servidor)</td><td><code>falso</code></td><td><code>falso</code></td><td><code>verdadero</code></td><td><code>falso</code></td><td><code>verdadero</code></td><td><code>falso</code></td></tr></tbody>
Resumen
Propiedades
Métodos
Dado un nombre de función y una prioridad, este método vincula la función a RunService.PreRender .
Devuelve si el entorno actual está en ejecución en el cliente.
Devuelve si el entorno actual está en modo Edit
Devuelve si el botón Ejecutar ha sido presionado para ejecutar la simulación en Studio.
Regresa si la experiencia está actualmente en ejecución.
Devuelve si el entorno actual está en ejecución en el servidor.
Devuelve si el entorno actual está en ejecución en Studio.
Pausa la simulación de la experiencia si está en ejecución, suspendiendo la física y los scripts.
Ejecuta la simulación del juego, ejecutando física y scripts.
Detiene la simulación de la experiencia si está en ejecución.
Desvincula una función que estaba vinculada al rendimiento usando RunService:BindToRenderStep() .
Eventos
Dispara cada marco, después de que la simulación de física se haya completado.
Dispara cada marco, después de que la simulación de física se haya completado.
Dispara cada marco, antes de la simulación de física pero después de renderizar.
Dispara cada marco, antes de que se renderice el marco.
Dispara cada marco, antes de la simulación de física.
Dispara cada marco, antes de que se renderice el marco.
Dispara cada marco, antes de la simulación de física.
Propiedades
ClientGitHash
RunState
Métodos
BindToRenderStep
La función BindToRenderStep() vincula una función personalizada para que se llame en un momento específico durante el paso de renderizado. Hay tres argumentos principales: name , priority y qué 1> function1> para llamar.
Dado que está vinculado al proceso de renderizado del cliente, BindToRenderStep() solo se puede llamar en el cliente.
Nombre
El parámetro name es una etiqueta para la vinculación y se puede usar con RunService:UnbindFromRenderStep() si la vinculación ya no es necesaria.
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 "tempBind"
RunService:UnbindFromRenderStep("tempBinding")
Prioridad
El priority de la vinculación es un entero; Determina cuándo durante el paso de renderizado para llamar la función personalizada. Cuanto menor este número, más temprano la función personalizada se llamará. Si dos vinculaciones tienen la misma prioridad, el motor de Roblox elegirá aleatoriamente uno para ejecutar primero. Los scripts de control predeterminados de Roblox se ejecutan con estos scripts de control específicos:
- Entrada del jugador: 100
- Controles de la cámara: 200 Para conveniencia; el Enum.RenderPriority enum se puede usar para determinar el valor de números para establecer un vínculo. Por ejemplo, para hacer un vínculo derecho antes de la actualización de la cámara por defecto, simplemente restar 1 del nivel de prioridad de la cámara.
Al usar Enum.RenderPriority, recuerda usar .Value en el final del nombre de la lista deseada. RunService:BindToRenderStep() no funcionará si se usa solo el nombre de la lista.
local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- El código aquí se ejecutará antes del script de cámara predeterminado de Roblox
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
Función Personalizada y Tiempo de 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 se ha pasado entre el comienzo de la renderización anterior y el comienzo de la renderización actual.
Todas las actualizaciones de renderizado se esperarán hasta que el código en el paso de renderizado termine. Asegúrese de que cualquier código llamado por BindToRenderStep() ejecute rápidamente y de manera eficiente; si el código toma demasiado tiempo, las imágenes de la experiencia serán difíciles de ver.
Parámetros
Etiqueta para la vinculación que se puede usar con Unbind si la vinculación ya no es necesaria.
La prioridad de la vinculación como un número entero; esto determina cuándo durante el paso de renderizado para llamar la función personalizada. El menor de este número, la fecha en que se ejecutará la función personalizada. Si dos vinculaciones tienen la misma prioridad, el motor de Roblox elegirá aleatoriamente una para ejecutar primero.
La función personalizada está siendo vinculada.
Devuelve
Muestras de código
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 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 Class.LocalScript
Si este método返回 true , el entorno actual puede acceder a características solo para clientes como RunService.PreRender o Players.LocalPlayer .
Devuelve
Si el entorno actual está ejecutando el cliente.
IsEdit
Este método regresa si el entorno actual está en modo "editar", por ejemplo en Studio cuando la experiencia no está en ejecución.
IsEdit() devolverá el valor inverso 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
Este método devuelve si el botón Correr ha sido presionado para ejecutar la simulación en Studio. Continuará devolviendo true si la simulación se ha detenido usando el botón Pausar; sin embargo, una vez que se ha detenido usando el botón 2> Detener2>, devolverá a devolver 5> false 5>.
Tenga en cuenta que Studio solo ingresa en el modo "ejecutar" cuando se presiona el botón Ejecutar, no el botón Jugar. También tenga en cuenta que este método devolverá false si la simulación se inicia con el botón 2>Ejecutar2> en lugar del botón 5>Jugar5>.
Devuelve
Si el botón Correr se ha presionado para ejecutar la simulación en Studio.
IsRunning
Devuelve si la experiencia está ejecutando actualmente, lo que significa que la simulación se ha ejecutado utilizando los botones Correr o Jugar .
IsRunning() siempre devolverá el valor inverso de IsEdit() excepto cuando la simulación haya sido pausada, en cuyo caso ambos métodos devolverán false .
Devuelve
Si la experiencia está actualmente en marcha.
IsServer
Este servidorScript 的代码,它将在 RunContext 中
Si esta función返回 true, then the current environment can access server-only features like ServerStorage or ServerScriptService .
Devuelve
Si el entorno actual está ejecutando en el servidor.
IsStudio
Este método返回 Studio 中是否运行当前环境。 可以用于包装只需在 Studio 中测试时执行的代码。
Devuelve
Si el entorno actual está en ejecución en Studio.
Pause
Este método pausa la simulación de la experiencia si está en ejecución, sospecha la simulación de la física y los scripts. La simulación se puede iniciar usando Run() o el botón Run en Studio; cuando la simulación se detiene, IsRunning() retornará 1> false1> .
Devuelve
Run
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á 2> true2> si la simulación se
Devuelve
Stop
Este método detiene la simulación de la experiencia si está en ejecución. Cuando la simulación se detiene, IsRunning() devolverá false y IsEdit() devolverá 1>1> Class.RunService:IsRunService1> .
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 que se haya realizado a la experiencia por la simulación de física y los scripts persistirá después de que la simulación se haya terminado.
Devuelve
UnbindFromRenderStep
Dado un nombre de una función 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 son necesarias, o cuando ya no es necesario ejecutar cada paso.
Si no hay función vinculada por el nombre dado, este método no toma ninguna acción y continúa sin generar un error.
Parámetros
El nombre de la función que se está desвяzando.
Devuelve
Eventos
Heartbeat
El evento Heartbeat cada vez que se activa, después de que la simulación de física se complete. El argumento deltaTime indica el tiempo que ha pasado 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 que se programan con la task biblioteca. Heartbeat es comúnmente usado para tareas periódicas, como actualizar sistemas de juego clave como la regeneración de salud.
Luego, el motor envía actualizaciones de propiedades y eventos al servidor o clientes que se reciben más tarde como parte del paso de replicación recibir paso.
Parámetros
El tiempo (en segundos) que ha pasado desde el marco anterior.
PostSimulation
El evento PostSimulation activa cada marco, después de que la simulación de física se haya completado. El argumento deltaTimeSim indica el tiempo que ha pasado desde el marco anterior.
Este evento es útil para hacer los ajustes finales al resultado de la simulación. Después de esta fase, el motor activa el evento Heartbeat .
Parámetros
El tiempo (en segundos) que ha pasado desde el marco anterior.
PreAnimation
El evento PreAnimation activa cada marco, antes de la simulación de física pero después de renderizar. El argumento deltaTimeSim indica el tiempo que ha pasado desde el marco anterior.
Este evento es útil para modificar objetos de animación, como ajustar su velocidad o prioridad. Una vez que el evento PreAnimation esté completado, el motor comenzará a ejecutar estas animaciones, actualizando las transformaciones compartidas que se usarán más tarde para actualizar los objetos durante la simulación de física.
Después de que las animaciones se hayan ejecutado, el motor activa el evento PreSimulation .
Parámetros
El tiempo (en segundos) que ha pasado desde el marco anterior.
PreRender
El evento PreRender (equivalente a RenderStepped ) se activa cada marco, antes de que se renderice el marco. El argumento deltaTimeRender indica el tiempo que ha elapsed desde el marco anterior.
Este evento le permite ejecutar código y actualizar el mundo antes de que se dibuje en la pantalla del jugador. Esto es útil para ajustes de último minuto, como cambiar posiciones de 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.
Como PreRender es client-side, solo se puede usar en un LocalScript , en un ModuleScript requerido por un 1> Class.LocalScript1> , o en un 4> Class.Script4> con
Después de la fase PreRender, la fase de simulación comienza con el evento Class.RunService.PreAnimation|PreAnimation ".
Parámetros
El tiempo (en segundos) que ha pasado desde el marco anterior.
PreSimulation
El evento PreSimulation (equivalente a Stepped ) se activa cada marco, antes de la simulación de física. El argumento deltaTimeSim indica el tiempo que ha elapsed desde el marco anterior.
Este evento es útil para ajustar propiedades como la velocidad o las fuerzas justo antes de que se apliquen como parte de la simulación. La simulación entonces se ejecuta, potencialmente varias veces, a medida que el solucionador de física se ejecuta a una frecuencia más alta que otros sistemas de motores. Una vez que esto esté completado, el evento de PostSimulation se disparará.
Parámetros
El tiempo (en segundos) que ha pasado desde el marco anterior.
RenderStepped
El evento RenderStepped (equivalente a PreRender ) se activa cada marco, antes de que se renderice el marco. El argumento deltaTime indica el tiempo que ha pasado desde el marco anterior.
Este evento le permite ejecutar código y actualizar el mundo antes de que se dibuje en la pantalla del jugador. Esto es útil para ajustes de último minuto, como cambiar posiciones de 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.
Como RenderStepped es client-side, sólo se puede usar en un LocalScript , en un ModuleScript requerido por un 1> Class.LocalScript1> , o en un 4> Class.Script4>
Después de la fase RenderStepped, la fase de simulación comienza con el evento Class.RunService.PreAnimation|PreAnimation ".
Parámetros
El tiempo (en segundos) que ha pasado desde el marco anterior.
Stepped
El evento Stepped (equivalente a PreSimulation ) se activa cada marco, antes de la simulación de física. El argumento deltaTime indica el tiempo que ha elapsed desde el marco anterior.
Este evento es útil para ajustar propiedades como la velocidad o las fuerzas justo antes de que se apliquen como parte de la simulación. La simulación entonces se ejecuta, potencialmente varias veces, a medida que el solucionador de física se ejecuta a una frecuencia más alta que otros sistemas de motores. Una vez que esto esté completado, el evento de PostSimulation se disparará.
Parámetros
La duración (en segundos) que RunService ha estado ejecutando.
El tiempo (en segundos) que ha pasado desde el marco anterior.