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

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

    Angesichts eines Stringnamens einer Funktion und einer Priorität bindet diese Methode die Funktion an RunService.PreRender.

  • 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 im Edit ist.

  • Parallel schreiben

    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.

  • 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():()
    Plugin-Sicherheit

    Pausiert die Simulation des Erlebnisses, wenn sie ausgeführt wird, und unterbricht Physik und Skripte.

  • Run():()
    Plugin-Sicherheit

    Führt die Simulation des Spiels aus, führt Physik und Skripte aus.

  • Stop():()
    Plugin-Sicherheit

    Stoppt die Simulation des Erlebnisses, wenn es ausgeführt wird.

  • Entfernt eine Funktion, die mit der Render-Schleife mit RunService:BindToRenderStep() gebunden war.

Ereignisse

Eigenschaften

ClientGitHash

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

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

name: string

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

Standardwert: ""
priority: number

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.

Standardwert: ""
function: function

Die benutzerdefinierte Funktion wird gebunden.

Standardwert: ""

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.

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

Parallel schreiben

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

Plugin-Sicherheit
Parallel schreiben

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

Parallel schreiben

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

Parallel schreiben

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

Parallel schreiben

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

()
Plugin-Sicherheit

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

()
Plugin-Sicherheit

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

()
Plugin-Sicherheit

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

name: string

Der Name der Funktion, die ungebunden wird.

Standardwert: ""

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

deltaTime: number

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

deltaTimeSim: number

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

deltaTimeSim: number

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

deltaTimeRender: number

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

deltaTimeSim: number

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

deltaTime: number

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

time: number

Die Dauer (in Sekunden), für die RunService läuft.

deltaTime: number

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