RunService
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
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
Dato un nome di stringa di una funzione e una priorità, questo metodo lega la funzione a RunService.PreRender .
Restituisce se l'ambiente attuale è in esecuzione sul client.
Ritorna se l'ambiente attuale è in Edit modalità.
Restituisce se il pulsante Esegui è stato premuto per eseguire la simulazione in Studio.
Restituisce se l'esperienza è in esecuzione attualmente.
Restituisce se l'ambiente attuale è in esecuzione sul Server.
Restituisce se l'ambiente attuale è in esecuzione in Studio.
Sospende la simulazione dell'esperienza se è in esecuzione, sospende la fisica e gli script.
Esegue la simulazione del Gioco, esegue la fisica e gli script.
Interrompe la simulazione dell'esperienza se è in esecuzione.
Abbinde una funzione che era legata al ciclo di rendering usando RunService:BindToRenderStep() .
Eventi
Spara ogni frame, dopo che la simulazione fisica sia completata.
Spara ogni frame, dopo che la simulazione fisica sia completata.
Spara ogni frame, prima della simulazione fisica ma dopo il render.
Spara ogni frame, prima che il frame venga generato.
Spara ogni frame, prima della simulazione fisica.
Spara ogni frame, prima che il frame venga generato.
Spara ogni frame, prima della simulazione fisica.
Proprietà
ClientGitHash
RunState
Metodi
BindToRenderStep
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
Etichetta per il binding che può essere utilizzato con Unbind se il binding non è più necessario.
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.
La funzione personalizzata che è stata legata.
Restituzioni
Campioni di codice
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
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
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
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
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
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
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
Run
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
Stop
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
UnbindFromRenderStep
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
Il nome della funzione che viene disbounded.
Restituzioni
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
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
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
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
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
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
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
La durata (in secondi) che RunService ha iniziato a eseguire.
Il tempo (in secondi) che è passato dal precedente frame.