RunService

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar
Dienst
Nicht repliziert

RunService enthält Methoden und Ereignisse für Zeit- und Kontextverwaltung sowie für die Verwaltung des Kontexts

RunService beherbergt auch Ereignisse, die es Ihrem Code ermöglichen, sich an den Frame-by-Frame-Loop von Roblox zu

Kontext-Test-Ergebnisse

<tbody>
<tr>
<td>Liver Player</td>
<td><code>falsch</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Live-Server</td>
<td><code>falsch</code></td>
<td><code>falsch</code></td>
<td><code>wahr</code></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Bearbeitungsmodus</td>
<td><code>wahr</code></td>
<td><code>wahr</code></td>
<td><code>wahr</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
<td><code>falsch</code></td>
</tr>
<tr>
<td>Zusammenarbeit bearbeiten</td>
<td><code>wahr</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
<td><code>falsch</code></td>
</tr>
<tr>
<td>Laufmodus</td>
<td><code>wahr</code></td>
<td><code>wahr</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
<td><code>wahr</code></td>
<td><code>wahr</code></td>
</tr>
<tr>
<td>Spielmodus (Client)</td>
<td><code>wahr</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
<td><code>falsch</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
</tr>
<tr>
<td>Spielmodus (Server)</td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
<td><code>wahr</code></td>
<td><code>wahr</code></td>
</tr>
<tr>
<td>Teamtest (Spieler)</td>
<td><code>wahr</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
<td><code>falsch</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
</tr>
<tr>
<td>Teamtest (Server)</td>
<td><code>falsch</code></td>
<td><code>falsch</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
<td><code>wahr</code></td>
<td><code>falsch</code></td>
</tr>
</tbody>

Zusammenfassung

Eigenschaften

Methoden

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

    Gibt einer Funktionsnamen und einer Priorität, wird diese Methode auf RunService.PreRender gebunden.

  • Parallel schreiben

    Gibt zurück, ob die aktuelle Umgebung auf dem Client ausgeführt wird.

  • Plugin-Sicherheit
    Parallel schreiben

    Gibt zurück, ob die aktuelle Umgebung in Edit-Modus ist.

  • Parallel schreiben

    Gibt zurück, ob die Run Schaltfläche gedrückt wurde, um die Simulation in Studio auszuführen.

  • Gibt zurück, ob die Erfahrung derzeit ausgeführt wird.

  • Parallel schreiben

    Gibt zurück, ob die aktuelle Umgebung auf dem Server ausgeführt wird.

  • Parallel schreiben

    Gibt zurück, ob die aktuelle Umgebung in Studio ausgeführt wird.

  • Pause():void
    Plugin-Sicherheit

    Suspendiert die Simulation des Erlebnisses, wenn sie läuft, physik und Skripte.

  • Run():void
    Plugin-Sicherheit

    Bietet eine Simulation des Spiels, in der Physik und Skripte laufen.

  • Stop():void
    Plugin-Sicherheit

    Stoppt die Simulation des Erlebnisses, wenn sie läuft.

  • Entbindet eine Funktion, die an den Render-Loop gebunden war, mit RunService:BindToRenderStep() .

Ereignisse

Eigenschaften

ClientGitHash

Schreibgeschützt
Nicht repliziert
Roblox-Skript-Sicherheit
Parallel lesen
Nicht repliziert
Plugin-Sicherheit
Parallel lesen

Methoden

BindToRenderStep

void

Die BindToRenderStep() Funktion bindet eine benutzerdefinierte Funktion, die zu einer bestimmten Zeit während des Render-Schritts aufgerufen wird. Es gibt drei Hauptargumente: name, priority und was 1> function1> aufzurufen ist.

Da es mit dem Rendering-Prozess des Clients verbunden ist, kann BindToRenderStep() nur auf dem Client aufgerufen werden.

Name

Der name -Parameter ist ein Etikett für die Bindung und kann mit RunService:UnbindFromRenderStep() verwendet werden, wenn die Bindung nicht mehr erforderlich ist.


local RunService = game:GetService("RunService")
local function functionToBind() end
-- Binden Sie die obige Funktion an die Bindung "tempBind"
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- Funktion "tempBind" abbinden
RunService:UnbindFromRenderStep("tempBinding")
Priorität

Die priority der Bindung ist ein ganzzahlig; es bestimmt, wann während des Render-Schritts die benutzerdefinierte Funktion aufgerufen wird. Je niedriger diese Zahl, desto früher wird die benutzerdefinierte Funktion aufgerufen. Wenn zwei Bindungen die gleiche Priorität haben, wählt die Roblox-Engine zufällig eine aus, um sie zuerst auszuführen. Standard-Roblox-Control-Skripts laufen mit diesen spezifischen Prioritäten:

  • Spieler-Eingabe: 100
  • Kamera-Steuerung: 200 Für Bequemlichkeit; die Enum.RenderPriority -열 kann verwendet werden, um die Zahlwerte zu bestimmen, die für die Festlegung eines Bindings verwendet werden sollen. Zum Beispiel, um einen Bindungsrechten vor dem Standard-Kamera-Update einen festzulegenden Wert abzuziehen, 1 von der Stufe.

Wenn Sie Enum.RenderPriority verwenden, denken Sie daran, .Value am Ende des gewünschten Enums zu verwenden. RunService:BindToRenderStep() wird nicht funktionieren, wenn nur das Ensemble besitzenverwendet wird.


local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- Code hier wird vor dem Skript, das. PL: die Skriptsausgeführt
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
Benutzerdefinierte Funktion und Delta Time

Das letzte Argument ( function ) ist die benutzerdefinierte Funktion, die aufgerufen wird. Diese Funktion wird ein Parameter namens deltaTime übergeben, das zeigt, wie viel Zeit zwischen dem Beginn der vorherigen Render-Schritt und dem Beginn der aktuellen Render-Schritt verstrichen ist.

Alle Rendering-Updates warten, bis der Code in der Rendering-Schlaufe fertig ist. Stellen Sie sicher, dass jeder Code, der von BindToRenderStep() aufgerufen wird, schnell und effizient ausgeführt wird; wenn der Code zu lange dauert, werden die Erlebniskomponenten unscharf.

Parameter

name: string

Etikett für die Bindung, die mit Unbind verwendet werden kann, wenn die Bindung nicht mehr benötigt wird.

priority: number

Die Priorität der Bindung als ganzzahlig; sie bestimmt, wann während des Render-Schritts die benutzerdefinierte Funktion aufgerufen wird. Je niedriger diese Zahl, desto früher wird die benutzerdefinierte Funktion aufgerufen. Wenn zwei Bindungen die gleiche Priorität haben, wählt die Roblox-Engine eine zufällig aus, um zuerst auszuführen.

function: function

Die benutzerdefinierte Funktion wird gebunden.


Rückgaben

void

Code-Beispiele

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

Parallel schreiben

Wenn der Code, der diesen Methoden auf einem Client ausführt, in einem Client-Kontext (in einem LocalScript , in einem ModuleScript , der von einem Class.LocalScript</

Wenn diese Methode true zurückgibt, kann die aktuelle Umgebung auf Client-only-Funktionen wie RunService.PreRender oder Players.LocalPlayer zugreifen.


Rückgaben

Ob die aktuelle Umgebung den Client ausführt.

IsEdit

Plugin-Sicherheit
Parallel schreiben

Diese Methode gibt zurück, ob die aktuelle Umgebung in "bearbeiten"-Modus ist, z. B. in Studio, wenn die Erfahrung nicht ausgeführt wird.

IsEdit() wird die Umkehr von IsRunning() zurückgeben, mit Ausnahme der Zeit, in der die Simulation aufgehalten wurde, in der Fall beide Methoden false zurückgeben.


Rückgaben

Ob die aktuelle Umgebung in "bearbeiten"-Modus ist.

IsRunMode

Parallel schreiben

Diese Methode gibt zurück, ob die Schaltfläche Run in Studio gedrückt wurde, um die Simulation auszuführen. Sie wird weiterhin true zurückgeben, wenn die Simulation mit der Schaltfläche Pause aufgehalten wird; jedoch wird sie zurückkehren, wenn sie mit der Schaltfläche 1> Stop1> aufgehalten wird.

Beachten Sie, dass Studio nur den Run--Modus einschaltet, wenn die Run--Schaltfläche gedrückt wird, nicht die false-Schaltfläche. Beachten Sie auch, dass diese Methode 2> false2> zurückgibt, wenn die Simulation mit 5> 8> Class.RunService:Run()5> gestartet wird, anstatt der 1> Run- 1>-Schalt


Rückgaben

Ob die Run Schaltfläche gedrückt wurde, um die Simulation in Studio auszuführen.

IsRunning

Gibt zurück, ob die Simulation derzeit ausgeführt wird, was bedeutet, dass die Simulation mit den Run oder Play Schaltflächen ausgeführt wird.

IsRunning() wird immer die Umkehr von IsEdit() zurückgeben, mit Ausnahme der Simulation, in der Fall beide Methoden zurückgeben false .


Rückgaben

Ob die Erfahrung derzeit läuft.

IsServer

Parallel schreiben

Diese Methode gibt zurück, ob die aktuelle Umgebung auf dem Server ausgeführt wird. Wenn der Code, der diesen Methode ausgeführt hat, in einem Server-Kontext (in einem Class

Wenn diese Funktion true zurückgibt, kann die aktuelle Umgebung auf Server-only-Funktionen wie ServerStorage oder ServerScriptService zugreifen.


Rückgaben

Ob die aktuelle Umgebung auf dem Server ausgeführt wird.

IsStudio

Parallel schreiben

Diese Methode gibt zurück, ob die aktuelle Umgebung in Studio ausgeführt wird. Es kann verwendet werden, um Code zuwrapped zu code, der nur ausgeführt werden sollte, wenn er in Studio getestet wird.


Rückgaben

Ob die aktuelle Umgebung in Studio ausgeführt wird.

Pause

void
Plugin-Sicherheit

Diese Methode stoppt die Simulation des Erlebnisses, wenn sie läuft, und die Simulation von Physik und Skripten einrastet. Die Simulation kann mit Run() oder der Run-Schaltfläche in Studio gestartet werden; wenn die Simulation angehalten wird, IsRunning() wird 1> false1> zurückgegeben.


Rückgaben

void

Run

void
Plugin-Sicherheit

Diese Methode führt die Simulation des Erlebnisses (Physik und Skripte) aus. Wenn die Simulation läuft, wird IsRunning()``true nur IsRunMode() zurückgeben, wenn die Simulation mit dem 2> Run-2>


Rückgaben

void

Stop

void
Plugin-Sicherheit

Diese Methode stoppt die Simulation des Erlebnisses, wenn sie läuft. Wenn die Simulation aufgehört wird, IsRunning() wird false und IsEdit() zurückgeben, und 2> tru2> wird zurückgegeben.

Im Gegensatz zum Stopp -Button in Studio, restoreiert das Aufrufen dieser Methode nicht die Erfahrung in den Zustand, in dem sie vor der Simulation ausführenwurde. Dies bedeutet, dass alle Änderungen, die der Physiksimulation und Skripts vorgenommen wurden, nachdem die Simulation beendet ist bestehen bleiben.


Rückgaben

void

UnbindFromRenderStep

void

Angaben eines Namens einer Funktion, die an BindToRenderStep() gesendet wird, wird diese Methode verwendet, um die Funktion von der Verbindung abzubinden, während PreRender . Dies wird verwendet, um gebundene Funktionen abzubinden, wenn sie nicht mehr benötigt werden, oder wenn sie nicht mehr jeden Schritt feuern müssen.

Wenn es keine gebundene Funktion mit dem angegebenen Namen gibt, führt diese Methode keine Aktion aus und geht weiter, ohne einen Fehler zu erzeugen.

Parameter

name: string

Der Name der Funktion, die abgebunden wird.


Rückgaben

void

Ereignisse

Heartbeat

Das Ereignis Heartbeat jedes Frame, nachdem die Physiksimulation abgeschlossen ist. Das deltaTime-Argument zeigt die Zeit an, die seit dem vorherigen Frame verstrichen ist.

Dieses Ereignis ist, wenn die meisten Skripte ausführen. Es findet am Ende jedes Frames statt und ist auch der Zeitpunkt, an dem alle ausstehenden Skripte ausgeführt werden, wie z. B. diejenigen, die mit der task Bibliothek geplant sind. Heartbeat wird häufig für periodische Aufgaben verwendet, wie z. B. Updates von Kern-Spielsystemen wie Gesundheitsregeneration.

Nach diesem Schritt sendet der Engine Ereignis-Updates und Updates mit Ereignissen an den Server oder Clients, die später als Teil des Replikations-Empfange Schritts erhalten werden.

Parameter

deltaTime: number

Die Zeit (in Sekunden), die seit dem vorherigen Frame abgelaufen ist.


PostSimulation

Das Ereignis PostSimulation jedes Frames, nachdem die Physiksimulation abgeschlossen ist. Das deltaTimeSim -Argument zeigt die Zeit an, die seit dem vorherigen Frame verstrichen ist.

Dieses Ereignis ist nützlich, um endgültige Anpassungen an das Ergebnis der Simulation vorzunehmen. Nach dieser Phase aktiviert der Engine das Ereignis Heartbeat.

Parameter

deltaTimeSim: number

Die Zeit (in Sekunden), die seit dem vorherigen Frame abgelaufen ist.


PreAnimation

Das Ereignis PreAnimation jedes Bild, vor der Physiksimulation, aber nach der Renderung auslöst. Das deltaTimeSim-Argument zeigt die Zeit an, die seit dem vorherigen Bild verstrichen ist.

Dieses Ereignis ist nützlich für die Änderung von Animationselementen, wie z. B. die Anpassung ihrer Geschwindigkeit oder Priorität. Sobald das PreAnimation -Ereignis abgeschlossen ist, führt der Engine diese Animationen aus, um diese gemeinsamen Transformationen zu aktualisieren, die später für das Aktualisieren von Objekten während der Physiksimulation verwendet werden.

Nachdem die Animationen gesteuert sind, aktiviert der Engine das Ereignis PreSimulation.

Parameter

deltaTimeSim: number

Die Zeit (in Sekunden), die seit dem vorherigen Frame abgelaufen ist.


PreRender

Das PreRender -Ereignis (äquivalent zu RenderStepped ) feuert jeden Frame ab, bevor der Frame gerendert wird. Das deltaTimeRender -Argument zeigt die Zeit an, die seit dem vorherigen Frame verstrichen ist.

Dieses Ereignis ermöglicht es Ihnen, Code auszuführen und die Welt vor dem Zeichnen auf dem Bildschirm eines Spieler:inzu aktualisieren. Dies ist nützlich für Last-Minute-Anpassungen wie das Ändern von Objektpositionen, das Aktualisieren von Animationen oder das Vorbereiten von visuellen Effekten, aber es sollte sparsam verwendet werden, da der Engine nicht starten kann, die Rendering-Sitzung bis zum Beenden des Codes zu rendern.

Da PreRender clientseitig ist, kann es nur in einem LocalScript , in einem ModuleScript benutzt werden, der von einem 1> Class.LocalScript1> benötigt wird, oder in einem 4> Class.Script4> mit

Nach der PreRender Phase beginnt die Simulations phase mit dem Ereignis PreAnimation.

Parameter

deltaTimeRender: number

Die Zeit (in Sekunden), die seit dem vorherigen Frame abgelaufen ist.


PreSimulation

Das PreSimulation -Ereignis (äquivalent zu Stepped ) feuert jedes Frame ab, bevor die Physiksimulation ausgeführt wird. Das deltaTimeSim -Argument zeigt die Zeit an, die seit dem vorherigen Frame verstrichen ist.

Dieses Ereignis ist nützlich, um Eigenschaften wie Geschwindigkeit oder Kräfte einzustellen, bevor sie als Teil der Simulation angewendet werden. Die Simulation läuft dann, möglicherweise mehrere Male, wie der Physik-Solver bei einer höheren Frequenz als andere Engine-Systeme läuft. Sobald dies abgeschlossen ist, wird das PostSimulation-Ereignis ausgelöst.

Parameter

deltaTimeSim: number

Die Zeit (in Sekunden), die seit dem vorherigen Frame abgelaufen ist.


RenderStepped

Das RenderStepped -Ereignis (äquivalent zu PreRender ) jedes Frame wird ausgeführt, bevor das Frame gerendert wird. Das deltaTime -Argument zeigt die Zeit an, die seit dem vorherigen Frame verstrichen ist.

Dieses Ereignis ermöglicht es Ihnen, Code auszuführen und die Welt vor dem Zeichnen auf dem Bildschirm eines Spieler:inzu aktualisieren. Dies ist nützlich für Last-Minute-Anpassungen wie das Ändern von Objektpositionen, das Aktualisieren von Animationen oder das Vorbereiten von visuellen Effekten, aber es sollte sparsam verwendet werden, da der Engine nicht starten kann, die Rendering-Sitzung bis zum Beenden des Codes zu rendern.

Da RenderStepped clientseitig ist, kann es nur in einem LocalScript , in einem ModuleScript , der von einem 1> Class.LocalScript1> benötigt wird, oder in einem 4> Class.Script4> mit 7>

Nach der RenderStepped Phase beginnt die Simulations phase mit dem Ereignis PreAnimation.

Parameter

deltaTime: number

Die Zeit (in Sekunden), die seit dem vorherigen Frame abgelaufen ist.


Stepped

Das Stepped -Ereignis (äquivalent zu PreSimulation ) feuert jeden Frame ab, bevor die Physiksimulation ausgeführt wird. Das deltaTime -Argument zeigt die Zeit an, die seit dem vorherigen Frame verstrichen ist.

Dieses Ereignis ist nützlich, um Eigenschaften wie Geschwindigkeit oder Kräfte einzustellen, bevor sie als Teil der Simulation angewendet werden. Die Simulation läuft dann, möglicherweise mehrere Male, wie der Physik-Solver bei einer höheren Frequenz als andere Engine-Systeme läuft. Sobald dies abgeschlossen ist, wird das PostSimulation-Ereignis ausgelöst.

Parameter

time: number

Die Dauer (in Sekunden), für die RunService ausgeführt wurde.

deltaTime: number

Die Zeit (in Sekunden), die seit dem vorherigen Frame abgelaufen ist.