RunService

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Serviço
Não replicado

RunService contém métodos e eventos para gerenciamento de tempo, assim como para gerenciar o contexto em que uma experiência ou script está executando.Métodos como IsClient() , IsServer() e IsStudio() podem ajudá-lo a determinar em que código de contexto está executando.Esses métodos são úteis para ModuleScripts que podem ser necessários por scripts de cliente e servidor.Além disso, IsStudio() pode ser usado para adicionar comportamentos especiais para testes no Studio.

RunService também abriga eventos que permitem que seu código adira ao ciclo frame‑by‑frame do Roblox, como PreRender , PreAnimation , PreSimulation , PostSimulation e Heartbeat.Selecionar o evento correto para usar em qualquer caso é importante, então você deve ler Programador de Tarefas para tomar uma decisão informada.

Resultados de Teste de Contexto

<th><code>Serviço de Execução de Classe.Run:IsStudio()|IsStudio</code></th>
<th><code>Serviço de Execução de Classe:IsClient()|IsClient</code></th>
<th><code>Class.RunService:IsServer()|IsServer</code></th>
<th><code>Serviço de Execução de Classe:IsEdit()|IsEdit</code></th>
<th><code>Class.RunService:Está Executando()|Está Executando</code></th>
<th><code>Serviço de Execução de Classe: IsRunMode()|IsRunMode</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>Jogador ao vivo</td><td><code>falso</code> ></td><td><code>verdadeiro</code> ></td><td><code>falso</code> ></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Servidor ao vivo</td><td><code>falso</code></td><td><code>falso</code></td><td><code>verdadeiro</code></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Modo de Edição</td>
<td><code>verdadeiro</code></td>
<td><code>verdadeiro</code></td>
<td><code>verdadeiro</code></td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Edição Colaborativa</td>
<td><code>verdadeiro</code></td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Modo de Execução</td>
<td><code>verdadeiro</code></td>
<td><code>verdadeiro</code></td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
<td><code>verdadeiro</code></td>
<td><code>verdadeiro</code></td>
</tr>
<tr>
<td>Modo de Jogo (Cliente)</td>
<td><code>verdadeiro</code></td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Modo de Jogo (Servidor)</td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
<td><code>verdadeiro</code></td>
<td><code>verdadeiro</code></td>
</tr>
<tr>
<td>Teste em Equipe (Jogador)</td>
<td><code>verdadeiro</code></td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Teste em Equipe (Servidor)</td>
<td><code>falso</code></td>
<td><code>falso</code></td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
<td><code>verdadeiro</code></td>
<td><code>falso</code></td>
</tr>
</tbody>
Meio Ambiente

Resumo

Propriedades

Métodos

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

    Dada uma string de nome de uma função e uma prioridade, este método vincula a função a RunService.PreRender.

  • Escrever Parallel

    Retorna se o ambiente atual está rodando no cliente.

  • Segurança do plugin
    Escrever Parallel

    Retorna se o ambiente atual está no modo Edit 2.

  • Escrever Parallel

    Retorna se o botão Correr foi pressionado para executar a simulação no Studio.

  • Retorna se a experiência está atualmente em execução.

  • Escrever Parallel

    Retorna se o ambiente atual está rodando no servidor.

  • Escrever Parallel

    Retorna se o ambiente atual está rodando no Studio.

  • Pause():()
    Segurança do plugin

    Pausa a simulação da experiência se ela estiver em andamento, suspendendo a física e os scripts.

  • Run():()
    Segurança do plugin

    Executa a simulação do jogo, executando física e scripts.

  • Stop():()
    Segurança do plugin

    Para a simulação da experiência se ela estiver rodando.

  • Desliga uma função que foi vinculada ao ciclo de renderização usando RunService:BindToRenderStep() .

Eventos

Propriedades

ClientGitHash

Somente leitura
Não replicado
Segurança do script Roblox
Ler Parallel
Não replicado
Segurança do plugin
Ler Parallel

Métodos

BindToRenderStep

()

A função BindToRenderStep() vincula uma função personalizada a ser chamada em um momento específico durante o passo de renderização.Existem três argumentos principais: name , priority e o que function chamar.

Como está ligado ao processo de renderização do cliente, BindToRenderStep() só pode ser chamado no cliente.

Qual o nome

O parâmetro name é uma etiqueta para o vinculo e pode ser usado com RunService:UnbindFromRenderStep() se o vinculo não for mais necessário.


local RunService = game:GetService("RunService")
local function functionToBind() end
-- Vincule a função acima ao vinculo chamado "tempBinding"
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- Desvincule a função vinculada a "tempBinding"
RunService:UnbindFromRenderStep("tempBinding")
Prioridade

O priority da vinculação é um integral; determina quando durante o passo de renderização chamar a função personalizada.Quanto menor esse número, mais cedo a função personalizada será chamada.Se duas vinculações tiverem a mesma prioridade, o Motor do Roblox escolherá aleatoriamente uma para executar primeiro.Os scripts de controle padrão do Roblox são executados com essas prioridades específicas:

  • Entrada do Jogador: 100
  • Controles de câmera: 200 Para conveniência; o Enum.RenderPriority enum pode ser usado para determinar o valor inteiro para definir um vinculo.Por exemplo, para fazer um direito de vinculação antes da atualização padrão da câmera, simplesmente subtraia 1 do nível de prioridade da câmera.

Ao usar Enum.RenderPriority, lembre-se de usar .Value no final do enum desejado. RunService:BindToRenderStep() não funcionará se apenas o enum for usado por conta possuir.


local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- Código aqui será executado antes do script de câmera padrão do Roblox
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
Função personalizada e tempo Delta

O último argumento ( function ) é a função personalizada para chamar.Essa função será passada um parâmetro chamado deltaTime que mostra quanto tempo passou entre o início do passo de renderização anterior e o início do passo de renderização atual.

Todas as atualizações de renderização esperarão até que o código no passo de renderização termine.Certifique-se de que qualquer código chamado por BindToRenderStep() execute rapidamente e eficientemente; se o código demorar muito, os visuais da experiência serão desajeitados.

Parâmetros

name: string

Rótulo para o vinculo que pode ser usado com Unbind se o vinculo não for mais necessário.

Valor Padrão: ""
priority: number

Prioridade da vinculação como um integral; determina quando durante o passo de renderização chamar a função personalizada.Quanto menor esse número, mais cedo a função personalizada será chamada.Se duas bindings tiverem a mesma prioridade, o Motor do Roblox escolherá aleatoriamente uma para executar primeiro.

Valor Padrão: ""
function: function

A função personalizada sendo vinculada.

Valor Padrão: ""

Devolução

()

Amostras 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

Escrever Parallel

Se o código que invocou este método estiver sendo executado em um contexto de cliente (em um LocalScript , em um ModuleScript necessário por um LocalScript , ou em um Script com RunContext definido para Enum.RunContext.Client ), este método retornará true .Em todos os outros casos, este método retornará false .

Se este método retornar true, o ambiente atual pode acessar recursos exclusivos do cliente, como RunService.PreRender ou Players.LocalPlayer.


Devolução

Se o ambiente atual está rodando o cliente.

IsEdit

Segurança do plugin
Escrever Parallel

Este método retorna se o ambiente atual está no modo "editar", por exemplo, no Studio quando a experiência não está em execução.

IsEdit() retornará o inverso de IsRunning(), exceto quando a simulação foi pausada, no qual ambos os métodos retornarão false .


Devolução

Se o ambiente atual está no modo "editar".

IsRunMode

Escrever Parallel

Este método retorna se o botão Correr foi pressionado para executar a simulação no Studio.Ele continuará a retornar true se a simulação foi pausada usando o botão Pause ; no entanto, uma vez que foi interrompida usando o botão Parar , ela voltará a retornar false .

Observe que o Studio entra apenas no modo "executar" quando o botão Correr é pressionado, não o botão Jogar .Observe também que este método retornará false se a simulação foi iniciada usando RunService:Run() em vez do botão Executar .


Devolução

Se o botão Correr foi pressionado para executar a simulação no Studio.

IsRunning

Retorna se a experiência está atualmente em execução, o que significa que a simulação foi executada usando os botões Executar ou Jogar .

IsRunning() sempre retornará o inverso de IsEdit() exceto quando a simulação foi pausada, no qual ambos os métodos retornarão false .


Devolução

Se a experiência está atualmente em execução.

IsServer

Escrever Parallel

Este método retorna se o ambiente atual está rodando no servidor.Se o código que invocou este método estiver sendo executado em um contexto de servidor (em um Script com RunContext definido para Enum.RunContext.Server ou Enum.RunContext.Legacy , ou em um ModuleScript exigido por um Script ), este método retornará true .Em todos os outros casos, este método retornará false .

Se essa função retornar verdadeiro, então o ambiente atual pode acessar recursos exclusivos do servidor como ServerStorage ou ServerScriptService.


Devolução

Se o ambiente atual está rodando no servidor.

IsStudio

Escrever Parallel

Este método retorna se o ambiente atual está rodando no Studio. Ele pode ser usado para embalar código que deve ser executado apenas ao testar no Studio.


Devolução

Se o ambiente atual está rodando no Studio.

Pause

()
Segurança do plugin

Este método põe em pausa a simulação da experiência se ela estiver em andamento, suspendendo a física e os scripts.A simulação pode ser iniciada usando Run() ou o botão Executar no Studio; quando a simulação é pausada, IsRunning() retornará false .


Devolução

()

Run

()
Segurança do plugin

Este método executa a simulação da experiência (física e scripts).Quando a simulação estiver em execução, IsRunning() retornará true .No entanto, IsRunMode() retornará apenas true se a simulação foi iniciada usando o botão Executar no Studio.


Devolução

()

Stop

()
Segurança do plugin

Este método interrompe a simulação da experiência se ela estiver em andamento.Quando a simulação é interrompida, IsRunning() retornará false e IsEdit() retornará true .

Em contraste com o botão Pare no Studio, chamar este método não restaurará a experiência ao estado em que estava antes da simulação ser executar.Isso significa que quaisquer alterações feitas à experiência pela simulação de física e scripts persistirão depois que a simulação terminar.


Devolução

()

UnbindFromRenderStep

()

Dado um nome de uma função enviada para BindToRenderStep(), este método desvinculará a função de ser chamada durante PreRender .Isso é usado para desvincular funções ligadas quando elas não forem mais necessárias ou quando não precisam mais disparar todos os passos.

Se não houver função vinculada pelo nome dado, este método não toma nenhuma ação e continua sem causar um erro.

Parâmetros

name: string

O nome da função sendo desvinculada.

Valor Padrão: ""

Devolução

()

Eventos

Heartbeat

O evento Heartbeat ocorre a cada quadro, após a simulação de física ter concluído.O argumento deltaTime indica o tempo que decorreu desde o quadro anterior.

Este evento é quando a maioria dos scripts executarexecutada.Ocorre no final de cada quadro e também é quando quaisquer scripts de espera são executados, como os agendados com a biblioteca task.Heartbeat é comumente usado para tarefas periódicas, como atualizar sistemas principais de jogos como regeneração de saúde.

Após este passo, o motor envia atualizações de propriedade e eventos ao servidor ou aos clientes que são recebidos mais tarde como parte do passo de recepção de replicação .

Parâmetros

deltaTime: number

O tempo (em segundos) que decorreu desde o quadro anterior.


PostSimulation

O evento PostSimulation ocorre a cada quadro, após a simulação de física ter concluído.O argumento deltaTimeSim indica o tempo que o quadro atual passou a simulação de física, sem levar em conta o atraso de física.

Este evento é útil para fazer ajustes finais no resultado da simulação. Após esta fase, o motor ativa o evento Heartbeat.

Parâmetros

deltaTimeSim: number

O tempo (em segundos) que o quadro atual passou a simulação de física, sem levar em conta o atraso de física.


PreAnimation

O evento PreAnimation ocorre a cada quadro, antes da simulação de física, mas após o renderizamento.O argumento deltaTimeSim indica o tempo que o quadro atual tem passado animações.

Este evento é útil para modificar objetos de animação, como ajustar sua velocidade ou prioridade.Uma vez que o evento PreAnimation completado, o motor procede a executar essas animações, atualizando as transformações conjuntas que serão usadas mais tarde para atualizar objetos durante a simulação de física.

Depois que as animações forem concluídas, o motor ativa o evento PreSimulation.

Parâmetros

deltaTimeSim: number

O tempo (em segundos) que a animação de quadro atual passou.


PreRender

O evento PreRender ( substituição para RenderStepped ) dispara a cada quadro, antes que o quadro seja renderizado.O argumento deltaTimeRender indica o tempo que decorreu desde o quadro anterior.

Este evento permite que você execute código e atualize o mundo antes que ele seja desenhado na tela de um jogador.Isso é útil para ajustes de última hora, como mudar as posições dos objetos, atualizar animações ou preparar efeitos visuais, mas deve ser usado com moderação, pois o motor não pode começar a renderizar o quadro até que o código em execução neste evento tenha terminado de executar.

Como PreRender é do lado do cliente, só pode ser usado em um LocalScript , em um ModuleScript exigido por um LocalScript ou em um Script com RunContext definido para Enum.RunContext.Client.

Após a fase PreRender seguinte, a fase de simulação começa com o evento PreAnimation.

Parâmetros

deltaTimeRender: number

O tempo (em segundos) que decorreu desde o quadro anterior.


PreSimulation

O evento PreSimulation ( substituição para Stepped ) dispara a cada quadro, antes da simulação de física.O argumento deltaTimeSim indica o tempo em que o quadro atual irá executar a simulação de física, sem levar em conta o atraso de física.

Este evento é útil para ajustar propriedades como velocidade ou forças logo antes de serem aplicadas como parte da simulação.A simulação então é executada, potencialmente várias vezes, pois o solucionador de física é executado com uma frequência maior do que outros sistemas de motor.Uma vez que isso é concluído, o evento PostSimulation é disparado.

Parâmetros

deltaTimeSim: number

O tempo (em segundos) que o quadro atual dará continuidade à simulação de física, sem levar em conta o atraso de física.


RenderStepped

Dispara a cada quadro, antes que o quadro seja renderizado.

Nota de migração

Este evento foi substituído por PreRender que deve ser usado para novo trabalho.

Parâmetros

deltaTime: number

O tempo (em segundos) que decorreu desde o quadro anterior.


Stepped

Dispara todos os quadros, antes da simulação de física.

Nota de migração

Este evento foi substituído por PreSimulation que deve ser usado para novo trabalho.

Parâmetros

time: number

A duração (em segundos) que RunService tem sido executada por.

deltaTime: number

O tempo (em segundos) que decorreu desde o quadro anterior.