RunService
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
RunService enthält Methoden und Ereignisse für Zeitmanagement sowie für das Verwalten des Kontextes, in dem eine Erfahrung oder ein Skript ausgeführt wird.Methoden wie IsClient() , IsServer() und IsStudio() können Ihnen helfen, zu bestimmen, unter welchem Kontextcode ausgeführt wird.Diese Methoden sind nützlich für ModuleScripts, die sowohl vom Client als auch vom Server skript erforderlich sein können.Darüber hinaus kann IsStudio() verwendet werden, um spezielle Verhaltensweisen für das Testen in Studio hinzuzufügen.
RunService Beherbergt auch Ereignisse, die es deinem Code ermöglichen, sich an die Frame-by-Frame-Schleife von Roblox zu halten, wie PreRender , PreAnimation , PreSimulation , PostSimulation und Heartbeat .Die Auswahl des richtigen Ereignisses für jeden Fall ist wichtig, also solltest du Aufgabenplaner lesen, um eine informierte Entscheidung zu treffen.
Kontexttest-Ergebnisse
<th><code>Class.RunService:IsStudio()|IsStudio</code></th><th><code>Class.RunService: Ist Kunde()|Ist Kunde</code></th><th><code>Class.RunService: Ist Server()|Ist Server</code></th><th><code>Class.RunService: Ist bearbeiten()|Ist bearbeiten</code></th><th><code>Class.RunService:Läuft ab|Läuft ab</code></th><th><code>Class.RunService:IsRunMode()|IsRunMode</code></th></tr></thead><tbody><tr><td>Live-Spieler</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>richtig</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-Bearbeitung</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>Ausführungsmodus</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>
Umwelt |
---|
Zusammenfassung
Eigenschaften
Methoden
Angesichts eines Stringnamens einer Funktion und einer Priorität bindet diese Methode die Funktion an RunService.PreRender.
Gibt zurück, ob die aktuelle Umgebung auf dem Client ausgeführt wird.
Gibt zurück, ob die aktuelle Umgebung im Edit ist.
Gibt zurück, ob die Laufen -Taste gedrückt wurde, um die Simulation in Studio auszuführen.
Gibt zurück, ob das Erlebnis derzeit läuft.
Gibt zurück, ob die aktuelle Umgebung auf dem Server ausgeführt wird.
Gibt zurück, ob die aktuelle Umgebung in Studio ausgeführt wird.
Pausiert die Simulation des Erlebnisses, wenn sie ausgeführt wird, und unterbricht Physik und Skripte.
Führt die Simulation des Spiels aus, führt Physik und Skripte aus.
Stoppt die Simulation des Erlebnisses, wenn es ausgeführt wird.
Entfernt eine Funktion, die mit der Render-Schleife mit RunService:BindToRenderStep() gebunden war.
Ereignisse
Feuert jeden Frame ab, nachdem die Physiksimulation abgeschlossen ist.
Feuert jeden Frame ab, nachdem die Physiksimulation abgeschlossen ist.
Feuert jeden Frame ab, bevor die Physiksimulation beginnt, aber nach der Rendering.
Feuert jeden Frame ab, bevor der Frame gerendert wird.
Feuert jeden Frame, bevor die Physiksimulation beginnt.
Feuert jeden Frame ab, bevor der Frame gerendert wird.
Feuert jeden Frame, bevor die Physiksimulation beginnt.
Eigenschaften
ClientGitHash
RunState
Methoden
BindToRenderStep
Die BindToRenderStep()-Funktion bindet eine benutzerdefinierte Funktion, die zu einem bestimmten Zeitpunkt während des Renderings aufgerufen wird.Es gibt drei Hauptargumente: name , priority und was function anzurufen ist.
Da es mit dem Rendering-Prozess des Clients verbunden ist, kann BindToRenderStep() nur auf dem Client aufgerufen werden.
Namen
Der name-Parameter ist ein Label für die Bindung und kann mit RunService:UnbindFromRenderStep() verwendet werden, wenn die Bindung nicht mehr benötigt wird.
local RunService = game:GetService("RunService")
local function functionToBind() end
-- Binden Sie die Funktion oben an die Bindung mit dem Namen "tempBinding"
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- Entferne die Funktion, die an "tempBinding" gebunden ist
RunService:UnbindFromRenderStep("tempBinding")
Priorität
Die priority des Bindens ist eine ganzzahlig; sie bestimmt, wann während des Renderings 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 als Erstes ausgeführt zu werden.Die Standard-Roblox-Steuerskripte laufen mit diesen spezifischen Prioritäten:
- Spieler-Eingabe: 100
- Kamerasteuerung: 200 Aus Gründen der Einfachheit; die Enum.RenderPriority Enum kann verwendet werden, um den Ganzzahlenwert zu bestimmen, um eine Bindung festzulegen.Zum Beispiel, um ein Bindungsrecht kurz vor der Updatezu erstellen, subtrahiere einfach 1 vom Stufe.
Wenn du Enum.RenderPriority verwendest, denke daran, .Value am Ende des gewünschten Enums zu verwenden. RunService:BindToRenderStep() wird nicht funktionieren, wenn nur das Enum verwendet 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)
Eigene Funktion und Delta-Zeit
Das letzte Argument ( function ) ist die benutzerdefinierte Funktion, die aufgerufen werden muss.Diese Funktion wird einen Parameter namens deltaTime übergeben, der zeigt, wie viel Zeit zwischen dem Beginn des vorherigen Renderingschritts und dem Beginn des aktuellen Renderingschritts vergangen ist.
Alle Renderaktualisierungen warten, bis der Code im Render-Schritt abgeschlossen 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 Erlebniser visuell unscharf.
Parameter
Label für die Bindung, die mit Unbind verwendet werden kann, wenn die Bindung nicht mehr benötigt wird.
Priorität der Bindung als 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 als Erstes ausgeführt zu werden.
Die benutzerdefinierte Funktion wird gebunden.
Rückgaben
Code-Beispiele
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.
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.
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.
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
Wenn der Code, der diese Methode aufgerufen hat, in einem Client-Kontext ausgeführt wird (in einem LocalScript , in einem ModuleScript erforderlich von einem LocalScript oder in einem Script mit RunContext festgelegt auf Enum.RunContext.Client ), gibt diese Methode true zurück.In allen anderen Fällen wird diese Methode false zurückgeben.
Wenn diese Methode true zurückgibt, kann die aktuelle Umgebung auf clientexklusive Funktionen wie RunService.PreRender oder Players.LocalPlayer zugreifen.
Rückgaben
Ob die aktuelle Umgebung den Client ausführt.
IsEdit
Diese Methode gibt zurück, ob die aktuelle Umgebung im "bearbeiten"-Modus ist, zum Beispiel im Studio, wenn die Erfahrung nicht ausgeführt wird.
IsEdit() wird die umkehr von IsRunning() zurückgeben, außer wenn die simulation unterbrochen wurde, in dem fall werden beide methoden false zurückgeben.
Rückgaben
Ob die aktuelle Umgebung im "bearbeiten"-Modus ist.
IsRunMode
Diese Methode gibt zurück, ob die Laufen -Taste gedrückt wurde, um die Simulation in Studio auszuführen.Es wird weiterhin true zurückkehren, wenn die Simulation mit der Schaltfläche Pause unterbrochen wurde; jedoch, sobald es mit der Schaltfläche Stopp gestoppt wurde, wird es sich auf die Rückgabe von false zurückkehren.
Beachte, dass Studio nur in den "ausführen"-Modus wechselt, wenn die Schaltfläche Ausführen gedrückt wird, nicht die Schaltfläche Spielen .Beachten Sie auch, dass diese Methode false zurückgibt, wenn die Simulation mit RunService:Run() anstelle des Ausführen -Buttons gestartet wurde.
Rückgaben
Ob die Laufen -Taste gedrückt wurde, um die Simulation in Studio auszuführen.
IsRunning
Gibt zurück, ob das Erlebnis derzeit läuft, d. h. die Simulation mit den Laufen - oder Spielen -Schaltflächen ausgeführt wurde.
IsRunning() wird immer die umkehr von IsEdit() zurückgeben, außer wenn die simulation unterbrochen wurde, in dem fall werden beide methoden false zurückgeben.
Rückgaben
Ob das Erlebnis derzeit läuft.
IsServer
Diese Methode gibt zurück, ob die aktuelle Umgebung auf dem Server ausgeführt wird.Wenn der Code, der diese Methode aufgerufen hat, in einem Serverkontext ausgeführt wird (in einem Script mit RunContext festgelegt auf Enum.RunContext.Server oder Enum.RunContext.Legacy oder in einem ModuleScript erforderlich von einem Script ), wird diese Methode true zurückgeben.In allen anderen Fällen wird diese Methode false zurückgeben.
Wenn diese Funktion true zurückgibt, kann die aktuelle Umgebung auf serverexklusive Funktionen wie ServerStorage oder ServerScriptService zugreifen.
Rückgaben
Ob die aktuelle Umgebung auf dem Server ausgeführt wird.
IsStudio
Diese Methode gibt zurück, ob die aktuelle Umgebung in Studio ausgeführt wird. Sie kann verwendet werden, um Code zu verpacken, der nur ausgeführt werden sollte, wenn er in Studio getestet wird.
Rückgaben
Ob die aktuelle Umgebung in Studio ausgeführt wird.
Pause
Diese Methode unterbricht die Simulation des Erlebnisses, wenn sie ausgeführt wird, und suspendiert Physik und Skripte.Die Simulation kann mit Run() oder der Laufen Schaltfläche in Studio gestartet werden; wenn die Simulation unterbrochen wird, gibt IsRunning() zurück false .
Rückgaben
Run
Diese Methode führt die Simulation des Erlebnisses aus (Physik und Skripte).Wenn die Simulation läuft, gibt IsRunning() zurück true.Allerdings wird nur zurückgeben, wenn die Simulation mit der Laufen Schaltfläche in Studio gestartet wurde.
Rückgaben
Stop
Diese Methode stoppt die Simulation des Erlebnisses, wenn es ausgeführt wird.Wenn die Simulation gestoppt wird, gibt IsRunning() zurück false und IsEdit() gibt zurück true .
Im Gegensatz zur Stopp -Taste in Studio wird der Aufruf dieser Methode die Erfahrung nicht wiederherstellen, in dem Zustand, in dem sie vor der ausführender Simulation war.Das bedeutet, dass alle Änderungen an der Erfahrung durch die Physiksimulation und Skripte nach Beendigung der Simulation bestehen bleiben.
Rückgaben
UnbindFromRenderStep
Angesichts eines Namens einer Funktion, die an BindToRenderStep() gesendet wird, wird diese Methode die Funktion von der Anrufung während PreRender entfernen.Dies wird verwendet, um gebundene Funktionen zu entfernen, wenn sie nicht mehr benötigt werden oder wenn sie nicht mehr jeden Schritt abfeuern müssen.
Wenn es keine gebundene Funktion durch den angegebenen Namen gibt, ergreift diese Methode keine Maßnahmen und geht ohne Fehler fort.
Parameter
Der Name der Funktion, die ungebunden wird.
Rückgaben
Ereignisse
Heartbeat
Das Heartbeat-Ereignis wird ausgelöst, nachdem die Physiksimulation abgeschlossen ist.Das Argument deltaTime zeigt die Zeit an, die seit dem vorherigen Frame verstrichen ist.
Dieses Ereignis tritt auf, wenn die meisten Skripte ausführenwerden.Es tritt am Ende jedes Frames auf und es ist auch, wenn irgendwelche wartenden Skripte ausgeführt werden, wie diejenigen, die mit der task Bibliothek geplant sind.Heartbeat wird häufig für periodische Aufgaben verwendet, wie das Aktualisieren von Kernspielsystemen wie Gesundheitsregeneration.
Nach diesem Schritt sendet die Engine Eigenschaftsaktualisierungen und Ereignisse an den Server oder die Clients, die später als Teil des Replikationsschritts empfangen werden.
Parameter
Die Zeit (in Sekunden), die seit dem vorherigen Frame verstrichen ist.
PostSimulation
Das PostSimulation-Ereignis wird ausgelöst, nachdem die Physiksimulation abgeschlossen ist.Das Argument deltaTimeSim zeigt die Zeit an, in der der aktuelle Frame die Physiksimulation überschritten hat, ohne Physikdrosselung zu berücksichtigen.
Dieses Ereignis ist nützlich für die Durchführung letzter Anpassungen am Ergebnis der Simulation. Nach dieser Phase wird der Motor das Ereignis Heartbeat auslösen.
Parameter
Die Zeit (in Sekunden), in der der aktuelle Frame die Physiksimulation durchlaufen hat, ohne Physikdrosselung zu berücksichtigen.
PreAnimation
Das Ereignis PreAnimation wird jeden Frame ausgelöst, bevor die Physiksimulation beginnt, aber nach der Darstellung.Das Argument deltaTimeSim zeigt die Zeit an, in der der aktuelle Frame Steppenanimationen hat.
Dieses Ereignis ist nützlich für die Änderung von Animationsobjekten, wie das Anpassen ihrer Geschwindigkeit oder Priorität.Sobald das Ereignis PreAnimation fertig ist, führt der Motor diese Animationen aus, aktualisiert die gemeinsamen Transformationen, die später verwendet werden, um Objekte während der Physiksimulation zu aktualisieren.
Nachdem die Animationen gesteigert wurden, aktiviert die Engine das Ereignis PreSimulation.
Parameter
Die Zeit (in Sekunden), in der der aktuelle Frame Steppen-Animationen hat.
PreRender
Das Ereignis PreRender (Ersetzung für RenderStepped ) wird jeden Frame abfeuern, bevor der Frame gerendert wird.Das Argument deltaTimeRender zeigt die Zeit an, die seit dem vorherigen Frame verstrichen ist.
Dieses Ereignis ermöglicht es Ihnen, Code auszuführen und die Welt zu aktualisieren, bevor sie auf dem Bildschirm eines Spieler:ingezeichnet wird.Dies ist nützlich für kurzfristige Anpassungen wie das Ändern von Objektpositionen, das Aktualisieren von Animationen oder die Vorbereitung von visuellen Effekten, aber es sollte sparsam verwendet werden, da die Engine nicht starten kann, bis der Code in diesem Ereignis ausgeführt ist.
Da PreRender auf der Clientseite ist, kann es nur in einem LocalScript , in einem ModuleScript , das von einem LocalScript erforderlich ist, oder in einem Script verwendet werden, mit RunContext auf Enum.RunContext.Client festgelegt.
Nach der Phase PreRender beginnt die Simulationsphase mit dem Ereignis PreAnimation.
Parameter
Die Zeit (in Sekunden), die seit dem vorherigen Frame verstrichen ist.
PreSimulation
Das Ereignis PreSimulation (Ersetzung für Stepped ) wird jeden Frame vor der Physiksimulation abgefeuert.Das Argument deltaTimeSim zeigt die Zeit an, in der der aktuelle Frame die Physiksimulation durchführt, ohne Physikdrosselung zu berücksichtigen.
Dieses Ereignis ist nützlich für die Anpassung von Eigenschaften wie Geschwindigkeit oder Kraft, kurz bevor sie als Teil der Simulation angewendet werden.Die Simulation läuft dann möglicherweise mehrmals, da der Physiklöser mit einer höheren Frequenz läuft als andere Antriebssysteme.Sobald dies abgeschlossen ist, wird das Ereignis PostSimulation ausgelöst.
Parameter
Die Zeit (in Sekunden), in der der aktuelle Frame die Physiksimulation durchführt, ohne Physikdrosselung zu berücksichtigen.
RenderStepped
Feuert jeden Frame ab, bevor der Frame gerendert wird.
Migrationsnotiz
Dieses Ereignis wurde durch PreRender das für neue Arbeit verwendet werden sollte.
Parameter
Die Zeit (in Sekunden), die seit dem vorherigen Frame verstrichen ist.
Stepped
Feuert jeden Frame, bevor die Physiksimulation beginnt.
Migrationsnotiz
Dieses Ereignis wurde durch PreSimulation das für neue Arbeit verwendet werden sollte.
Parameter
Die Dauer (in Sekunden), für die RunService läuft.
Die Zeit (in Sekunden), die seit dem vorherigen Frame verstrichen ist.