RunService

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Assistenza
Non Replicato

RunService contiene metodi e eventi per la gestione del tempo nonché per la gestione del contesto in cui un'es

RunService ospita anche gli eventi che consentono al tuo codice di aderire alla frase-by-frame loop di Roblox, come

Risultati del test di contesto

<tbody>
<tr>
<td>Giocatore dal vivo</td>
<td><code>falso</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Server dal vivo</td>
<td><code>falso</code></td>
<td><code>falso</code></td>
<td><code>vero</code></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Modalità di modifica</td>
<td><code>vero</code></td>
<td><code>vero</code></td>
<td><code>vero</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Modifica collaborativa</td>
<td><code>vero</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Esegui Modalità</td>
<td><code>vero</code></td>
<td><code>vero</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
<td><code>vero</code></td>
<td><code>vero</code></td>
</tr>
<tr>
<td>Modalità di gioco (client)</td>
<td><code>vero</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Modalità di gioco (Server)</td>
<td><code>vero</code></td>
<td><code>falso</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
<td><code>vero</code></td>
<td><code>vero</code></td>
</tr>
<tr>
<td>Test di squadra (Player)</td>
<td><code>vero</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
<td><code>falso</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
</tr>
<tr>
<td>Testare la squadra (Server)</td>
<td><code>falso</code></td>
<td><code>falso</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
<td><code>vero</code></td>
<td><code>falso</code></td>
</tr>
</tbody>

Sommario

Proprietà

Metodi

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

    Dato un nome di stringa di una funzione e una priorità, questo metodo lega la funzione a RunService.PreRender .

  • Scrivi Parallelo

    Restituisce se l'ambiente attuale è in esecuzione sul client.

  • Sicurezza Plugin
    Scrivi Parallelo

    Ritorna se l'ambiente attuale è in Edit modalità.

  • Scrivi Parallelo

    Restituisce se il pulsante Esegui è stato premuto per eseguire la simulazione in Studio.

  • Restituisce se l'esperienza è in esecuzione attualmente.

  • Scrivi Parallelo

    Restituisce se l'ambiente attuale è in esecuzione sul Server.

  • Scrivi Parallelo

    Restituisce se l'ambiente attuale è in esecuzione in Studio.

  • Pause():void
    Sicurezza Plugin

    Sospende la simulazione dell'esperienza se è in esecuzione, sospende la fisica e gli script.

  • Run():void
    Sicurezza Plugin

    Esegue la simulazione del Gioco, esegue la fisica e gli script.

  • Stop():void
    Sicurezza Plugin

    Interrompe la simulazione dell'esperienza se è in esecuzione.

  • Abbinde una funzione che era legata al ciclo di rendering usando RunService:BindToRenderStep() .

Eventi

Proprietà

ClientGitHash

Sola Lettura
Non Replicato
Sicurezza Script Roblox
Lettura Parallela
Non Replicato
Sicurezza Plugin
Lettura Parallela

Metodi

BindToRenderStep

void

La funzione BindToRenderStep() lega una funzione personalizzata da chiamare in un momento specifico durante il passaggio di rendering. Ci sono tre argomenti principali: name , priority e quale 1> function1> chiamare.

Poiché è legato al processo di rendering del client, BindToRenderStep() può essere chiamato solo sul client.

Nome

Il parametro name è un'etichetta per il binding e può essere utilizzato con RunService:UnbindFromRenderStep() se il binding non è più necessario.


local RunService = game:GetService("RunService")
local function functionToBind() end
-- Leggi la funzione sopra a "tempBinding"
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- Unbind la funzione legata a "tempBinding"
RunService:UnbindFromRenderStep("tempBinding")
Priorità

Il priority della binding è un Integro; determina quando durante il render step per chiamare la funzione personalizzata. Il numero inferiore di questo numero, il prima che la funzione personalizzata verrà chiamata. Se due binding hanno la stessa priorità, il motore Roblox sceglierà casualmente uno per eseguire prima. Gli script di controllo predefiniti di Roblox vengono eseguiti con queste priorità specifiche:

  • Inserimento del giocatore: 100
  • Controlli della fotocamera: 200 Per convenienza; l'Enum.RenderPriority枚 può essere utilizzato per determinare il valore intero da impostare per un binding. Ad esempio, per fare una binding right prima dell'Aggiornarmentodella fotocamera predefinito, semplicemente sottrarre 1 dalla Livellodella fotocamera.

Quando si utilizza Enum.RenderPriority, ricorda di utilizzare .Value alla fine dell'enum desiderato. RunService:BindToRenderStep() non funzionerà se si utilizza solo l'enum.


local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- Il codice qui eseguirà prima dello script della telecamera Roblox predefinito
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
Funzione personalizzata e tempo di delta

L'ultimo argomento ( function ) è la funzione personalizzata da chiamare. Questa funzione verrà passata un parametro chiamato deltaTime che mostra quanto tempo è passato tra l'inizio del passo di rendering precedente e l'inizio del passo di rendering attuale.

Tutti gli aggiornamenti di rendering saranno in attesa fino a quando il codice nella fase di rendering non è finito. Assicurati che qualsiasi codice chiamato da BindToRenderStep() esegua rapidamente e in modo efficiente; se il codice richiede troppo tempo, le visualizzazioni dell'esperienza saranno problematiche.

Parametri

name: string

Etichetta per il binding che può essere utilizzato con Unbind se il binding non è più necessario.

priority: number

La priorità della binding come numero Integro; Determina quando durante il passaggio di rendering chiamare la funzione personalizzata. Il numero inferiore a questo, il più presto possibile la funzione personalizzata verrà chiamata. Se due binding hanno la stessa priorità il motore Roblox sceglierà casualmente uno per essere eseguito prima.

function: function

La funzione personalizzata che è stata legata.


Restituzioni

void

Campioni di codice

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
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)
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

Scrivi Parallelo

Se il codice che ha invocato questo metodo viene eseguito in un contesto client (in un LocalScript , in un ModuleScript richiesto da un LocalScript , o in un <

Se questo metodo restituisce true , l'ambiente attuale può accedere a funzionalità client-only come RunService.PreRender o Players.LocalPlayer .


Restituzioni

Se l'ambiente attuale sta eseguendo il client.

IsEdit

Sicurezza Plugin
Scrivi Parallelo

Questo metodo restituisce se l'ambiente attuale è in modalità "Modificare", ad esempio in Studio quando l'esperienza non è in esecuzione.

IsEdit() restituirà il contrario di IsRunning(), ad eccezione quando la simulazione è stata暂停, in cui entrambi i metodi restituiranno false .


Restituzioni

Se l'attuale ambiente è in modalità "Modificare".

IsRunMode

Scrivi Parallelo

Questo metodo restituisce se il pulsante Esegui è stato premuto per eseguire la simulazione in Studio. Continuerà a restituire true se la simulazione è stata interrotta utilizzando il pulsante Pausa ; tuttavia, una volta interrotta utilizzando il pulsante 2>Ferma2>, restituirà 5>false5> .

Nota che Studio entra solo in modalità "Eseguire" quando viene premuto il pulsante Run, non il pulsante Play. Inoltre, questo metodo restituirà false se la simulazione è stata avviata utilizzando 2> Class.RunService:Run()2> invece che il pulsante 5> Run5>.


Restituzioni

Se il pulsante Esegui è stato premuto per eseguire la simulazione in Studio.

IsRunning

Restituisce se l'esperienza è in esecuzione, il che significa che la simulazione è stata eseguita utilizzando i pulsanti Run o Play .

IsRunning() restituirà sempre il contrario di IsEdit() ad eccezione quando la simulazione è stata暂停, in cui caso entrambi i metodi restituiranno false .


Restituzioni

Se l'esperienza è in esecuzione attualmente.

IsServer

Scrivi Parallelo

Questo metodo restituisce se l'ambiente attuale è in esecuzione sul Server. Se il codice che ha invocato questo metodo è in esecuzione in un contesto server (in un Class.

Se questa funzione restituisce vero, allora l'ambiente attuale può accedere a funzionalità server-only come ServerStorage o ServerScriptService .


Restituzioni

Se l'ambiente attuale è in esecuzione sul Server.

IsStudio

Scrivi Parallelo

Questo metodo restituisce se l'ambiente attuale è in esecuzione in Studio. Può essere utilizzato per avvolgere il codice che dovrebbe essere eseguito solo quando si testa in Studio.


Restituzioni

Se l'ambiente attuale è in esecuzione in Studio.

Pause

void
Sicurezza Plugin

Questo metodo interrompe la simulazione dell'esperienza se è in esecuzione, sospende la fisica e gli script. La simulazione può essere iniziata utilizzando Run() o il pulsante Run in Studio; quando la simulazione è interrotta, IsRunning() restituirà 1> false1> .


Restituzioni

void

Run

void
Sicurezza Plugin

Questo metodo esegue la simulazione dell'esperienza (fisica e script). Quando la simulazione è in esecuzione, IsRunning() restituirà true . Tuttavia, IsRunMode() restituirà solo 2> true2> se la sim


Restituzioni

void

Stop

void
Sicurezza Plugin

Questo metodo interrompe la simulazione dell'esperienza se è in esecuzione. Quando la simulazione è interrotta, IsRunning() restituirà false e IsEdit() restituirà 2> tru2> .

A differenza del pulsante Stop in Studio, chiamare questo metodo non ripristinerà l'esperienza allo stato in cui era prima che la simulazione venga Eseguire. Ciò significa che qualsiasi cambiamento apportato all'esperienza dalla simulazione fisica e dagli script persisterà dopo che la simulazione è finita.


Restituzioni

void

UnbindFromRenderStep

void

Dato un nome di una funzione inviata a BindToRenderStep() , questo metodo unbind la funzione dal essere chiamata durante PreRender . Questo viene utilizzato per unbind le funzioni una volta che non sono più necessarie, o quando non è più necessario fire ogni passo.

Se non è presente alcuna funzione legata dal nome specificato, questo metodo non esegue alcuna azione e continua senza apportare alcun errore.

Parametri

name: string

Il nome della funzione che viene disbounded.


Restituzioni

void

Eventi

Heartbeat

L'evento Heartbeat attiva ogni frame, dopo che la simulazione fisica è completata. L'argomento deltaTime indica il tempo trascorso dal precedente frame.

Questo evento è quando la maggior parte degli script Eseguireeseguita. Si verifica alla fine di ogni frame e è anche quando vengono eseguiti tutti gli script in attesa, come quelli programmati con la task libreria. Heartbeat è comunemente utilizzato per le attività periodiche, come l'aggiornamento dei sistemi di gioco come la rigenerazione della salute.

Dopo questo passo, il motore invia aggiornamenti e eventi delle proprietà e degli eventi ai server o ai client che vengono ricevuti in seguito come parte del passo di ricezione replica.

Parametri

deltaTime: number

Il tempo (in secondi) che è passato dal precedente frame.


PostSimulation

L'evento PostSimulation attiva ogni frame, dopo che la simulazione fisica è completata. L'argomento deltaTimeSim indica il tempo trascorso dal precedente frame.

Questo evento è utile per apportare le ultime modifiche all'esito della simulazione. Dopo questa fase, il motore attiva l'evento Heartbeat .

Parametri

deltaTimeSim: number

Il tempo (in secondi) che è passato dal precedente frame.


PreAnimation

L'evento PreAnimation attiva ogni frame, prima della simulazione fisica ma dopo il render. L'argomento deltaTimeSim indica il tempo trascorso dal precedente frame.

Questo evento è utile per modificare gli oggetti di animazione, come regolare la loro velocità o la loro priorità. Una volta completato l'evento PreAnimation, il motore esegue queste animazioni, aggiornando le trasformazioni congiunte che verranno poi utilizzate per aggiornare gli oggetti durante la simulazione fisica.

Dopo che le animazioni sono state completate, il motore attiva l'evento PreSimulation .

Parametri

deltaTimeSim: number

Il tempo (in secondi) che è passato dal precedente frame.


PreRender

L'evento PreRender (equivalente a RenderStepped ) attiva ogni frame, prima che il frame venga visualizzato. L'argomento deltaTimeRender indica il tempo che è elapsed dal precedente frame.

Questo evento ti consente di eseguire il codice e aggiornare il mondo prima che venga visualizzato sullo schermo di un Giocatore. Questo è utile per gli aggiustamenti di ultimo minuto come la modifica delle posizioni degli oggetti, l'aggiornamento delle animazioni o la preparazione di effetti visivi, ma dovrebbe essere utilizzato con parcelle limitate poiché il motore non può iniziare a rendere il frame fino a quando il codice in esecuzione in questo evento non ha finito di eseguire.

Poiché PreRender è lato client, può essere utilizzato solo in un LocalScript , in un ModuleScript richiesto da un 1> Class.LocalScript1> , o in un 4> Class.Script4> con 7>

Dopo la fase PreRender, la fase di simulazione inizia con l'evento PreAnimation .

Parametri

deltaTimeRender: number

Il tempo (in secondi) che è passato dal precedente frame.


PreSimulation

L'evento PreSimulation (equivalente a Stepped ) attiva ogni frame, prima della simulazione fisica. L'argomento deltaTimeSim indica il tempo che è passato dal precedente frame.

Questo evento è utile per regolare proprietà come velocità e forze appena prima che vengono applicate come parte della simulazione. La simulazione poi viene eseguita, potenzialmente più volte, mentre il solvente fisico viene eseguito a una frequenza più alta di altri sistemi di motore. Una volta completato, l'evento PostSimulation viene attivato.

Parametri

deltaTimeSim: number

Il tempo (in secondi) che è passato dal precedente frame.


RenderStepped

L'evento RenderStepped (equivalente a PreRender ) attiva ogni frame, prima che il frame venga visualizzato. L'argomento deltaTime indica il tempo che è passato dal precedente frame.

Questo evento ti consente di eseguire il codice e aggiornare il mondo prima che venga visualizzato sullo schermo di un Giocatore. Questo è utile per gli aggiustamenti di ultimo minuto come la modifica delle posizioni degli oggetti, l'aggiornamento delle animazioni o la preparazione di effetti visivi, ma dovrebbe essere utilizzato con parcelle limitate poiché il motore non può iniziare a rendere il frame fino a quando il codice in esecuzione in questo evento non ha finito di eseguire.

Poiché RenderStepped è lato client, può essere utilizzato solo in un LocalScript , in un ModuleScript richiesto da un 1> Class.LocalScript1> , o in un 4> Class.Script4> con

Dopo la fase RenderStepped, la fase di simulazione inizia con l'evento PreAnimation.

Parametri

deltaTime: number

Il tempo (in secondi) che è passato dal precedente frame.


Stepped

L'evento Stepped (equivalente a PreSimulation ) attiva ogni frame, prima della simulazione fisica. L'argomento deltaTime indica il tempo che è passato dal precedente frame.

Questo evento è utile per regolare proprietà come velocità e forze appena prima che vengono applicate come parte della simulazione. La simulazione poi viene eseguita, potenzialmente più volte, mentre il solvente fisico viene eseguito a una frequenza più alta di altri sistemi di motore. Una volta completato, l'evento PostSimulation viene attivato.

Parametri

time: number

La durata (in secondi) che RunService ha iniziato a eseguire.

deltaTime: number

Il tempo (in secondi) che è passato dal precedente frame.