RunService
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
RunService zawiera metody i wydarzenia związane z zarządzaniem czasem, a także z zarzą
RunService domyślnie hoteje wydarzenia, które umożliwiają użycie kodu do pętli ramy na ramę w
Wyniki testu kontekstu
<tbody><tr><td>Żywy gracz</td><td><code>fałszywy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td><td /><td /><td /></tr><tr><td>Żywy Serwer</td><td><code>fałszywy</code></td><td><code>fałszywy</code></td><td><code>prawdziwy</code></td><td /><td /><td /></tr><tr><td>Tryb Edytowania</td><td><code>prawdziwy</code></td><td><code>prawdziwy</code></td><td><code>prawdziwy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td><td><code>fałszywy</code></td></tr><tr><td>Edytja współpracująca</td><td><code>prawdziwy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td><td><code>fałszywy</code></td></tr><tr><td>Tryb bieżący</td><td><code>prawdziwy</code></td><td><code>prawdziwy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td><td><code>prawdziwy</code></td><td><code>prawdziwy</code></td></tr><tr><td>Graj w trybie (klient)</td><td><code>prawdziwy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td><td><code>fałszywy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td></tr><tr><td>Graj w trybie (na serwerze)</td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td><td><code>prawdziwy</code></td><td><code>prawdziwy</code></td></tr><tr><td>Test zespołu (gracz)</td><td><code>prawdziwy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td><td><code>fałszywy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td></tr><tr><td>Test zespołu (na serwerze)</td><td><code>fałszywy</code></td><td><code>fałszywy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td><td><code>prawdziwy</code></td><td><code>fałszywy</code></td></tr></tbody>
Podsumowanie
Właściwości
Metody
Dane imię funkcji i priorytetu, ten metod przywiązuje funkcję do RunService.PreRender .
Wykonuje, czy obecny środowisko jest uruchomiony na klienta.
Powoduje, czy obecny kod środowiskowy jest w trybie Edit.
Powoduje, czy przycisk Zacznij został naciśnięty, aby uruchomić symulację w Studio.
Wyjaśnia, czy doświadczenie jest obecnie uruchomione.
Wykonuje, czy obecny środowiskowy jest uruchomiony na serwerze.
Wyjaśnia, czy obecny kod środowiskowy jest uruchomiony w Studio.
Zatrzymuje symulację doświadczenia, jeśli jest ona uruchomiona, zawiesza fizykę i skrypcje.
Konfiguruje symulację gra, która wykonuje fizykę i kody.
Zatrzymuje symulację doświadczenia, jeśli jest ona uruchomiona.
Odłącza funkcję, która była związana z renderowaniem za pomocą RunService:BindToRenderStep() .
Zdarzenia
Wykonuje każdą klatkę, po zakończeniu symulacji fizycznej.
Wykonuje każdą klatkę, po zakończeniu symulacji fizycznej.
Wystrzela każdą ramę, zanim nastąpi symulacja fizyczna, ale po renderowaniu.
Wykonuje każdą klatkę, zanim klatka zostanie renderowana.
Wykonuje każdą klatkę, zanim nastąpi symulacja fizyczna.
Wykonuje każdą klatkę, zanim klatka zostanie renderowana.
Wykonuje każdą klatkę, zanim nastąpi symulacja fizyczna.
Właściwości
ClientGitHash
RunState
Metody
BindToRenderStep
Funkcja BindToRenderStep() wiąże niestandardową funkcję, która powinna być wywołana w określonym czasie podczas kroku renderowania. Są trzy główne argumenty: name , priority i co 1>function1> należy wywołać.
Ponieważ jest powiązany z procesem renderowania klienta, BindToRenderStep() można wywołać tylko na klencie.
Nazwa
Parametr name jest etykietą dla wiązania i może być używany z RunService:UnbindFromRenderStep() , jeśli wiązanie nie jest już wymagane.
local RunService = game:GetService("RunService")
local function functionToBind() end
-- Zwiąż funkcję powyżej z wiążącym nazyającym się "tempBinding"
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- Odznacz funkcję związaną z "tempBinding"
RunService:UnbindFromRenderStep("tempBinding")
Priorytet
Priorytet priority wiązania jest liczbą całkowitą; określa, kiedy podczas kroku renderowania wezwieć niestandardową funkcję. Im niższy ten liczebnik, tym szybciej niestandardowa funkcja zostanie wywołana. Jeśli dwa wiązania mają tę samą priorytet, silnik Roblox losowo wybierze jeden do uruchomienia pierwszy. Domyślne skrypty kontrolne Roblox działają z tym
- Wejście gracza: 100
- Kontrolery kamery: 200 Dla udogodnienia; zapis ustawień Enum.RenderPriority można użyć do określenia wartości liczby, aby ustawić powiązanie. Na przykład, aby ustawić wiążącego prawie przed domyślną aktualizacjakamery, po prostu odejmij 1 od poziomu priorytetu kamery.
Podczas używania Enum.RenderPriority , pamiętaj o użyciu .Value na końcu pożądanego ennum. RunService:BindToRenderStep() nie będzie działał, jeśli tylko ennum jest używany posiadać.
local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- Kod tutaj zostanie wykonany przed domyślnym skryptem kamerą Roblox
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
Niestandardowa funkcja i czas Delta
Ostatnim argumentem ( function ) jest funkcja niestandardowa do wezwania. Ta funkcja będzie przekazywana jeden parametr nazyającym się deltaTime, który pokazuje, ile czasu minęło między początkiem poprzedniego kroku renderowania a początkiem kroku renderowania obecnego.
Wszystkie aktualizacje renderowania zostaną wykonane, aż kod w renderingu się skończy. Upewnij się, że każdy kod zadany przez BindToRenderStep() będzie szybko i wydajnie wykonany; jeśli kod będzie zbyt długi, wizualizacje doświadczenia będą migotać.
Parametry
Priorytet wiązania jako liczby całkowitej; określa, kiedy podczas kroku renderowania wezwieć funkcję niestandardową. Im niższy ten liczebnik, tym szybciej funkcja niestandardowa zostanie wykonana. Jeśli dwa wiązania mają ten sam priorytet, silnik Roblox losowo wybierze jedną do wykonania pierwszy.
Zdefiniowana funkcja.
Zwroty
Przykłady kodu
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
Jeśli kod, który wywołał ten metodzwraca się w kontekście klienta (w LocalScript , w ModuleScript wymaganym przez Class.LocalScript
Jeśli ten metod returnuje true , obecny środowisko może uzyskać dostęp do funkcji tylko dla klienta, takich jak RunService.PreRender lub Players.LocalPlayer.
Zwroty
Czy obecny środowisko jest uruchomiony klienta.
IsEdit
Ten metod returnuje, czy obecny kod środowiskowy jest w trybie "edytowania", na przykład w Studio, gdy doświadczenie nie jest uruchomione.
IsEdit() zwróci odwrotność IsRunning() , z wyjątkiem czasu, w którym symulacja została wstrzymana, w którym obie metody zwrócą false .
Zwroty
Czy obecny interfejs jest w trybie "edytuj".
IsRunMode
Ten metod returnuje, czy przycisk Zacznij został naciśnięty, aby uruchomić symulację w Studio. Będzie nadal wracać true, jeśli symulacja została wstrzymana przy użyciu przycisku Zatrzymaj ; jednak, po wstrzymaniu użycia przycisku 1>Zatrzymaj1>, zostanie zwrócona do
Uwaga, że Studio wchodzi tylko w tryb "biegnij", gdy przycisk Biegnij jest naciskany, nie przycisk Graj. Uwaga, że ten metod wypuści false jeśli symulacja została uruchomiona używając 2> Class.RunService:Run()2> zamiast przycisku 5> Biegnij5>.
Zwroty
Czy przycisk Biegnij został naciśnięty, aby uruchomić symulację w Studio.
IsRunning
Powoduje, czy doświadczenie jest obecnie uruchomione, co oznacza, że symulacja została uruchomiona za pomocą przycisków Biegnij lub Graj.
IsRunning() zawsze zwraca odwrotność IsEdit() z wyjątkiem czasu, w którym symulacja została wstrzymana, w którym obie metody zwracają false .
Zwroty
Czy doświadczenie jest obecnie uruchomione.
IsServer
Ten metod returnuje, czy obecny środowisko jest uruchomione na serwerze. Jeśli kod, który uruchomił ten metod, jest uruchomiony w kontekście serw
Jeśli ta funkcja zwraca prawdę, to obecny środowisko może uzyskać dostęp do serwerowych funkcji, takich jak ServerStorage lub ServerScriptService.
Zwroty
Czy obecny środowisko jest uruchomiony na serwerze.
IsStudio
Ten metod returnuje, czy obecny kod środowiskowy jest uruchomiony w Studio. Można go użyć do zapakowania kodu, który powinien zostać wykonany tylko podczas testowania w Studio.
Zwroty
Czy obecny środowisko jest uruchomiony w Studio.
Pause
Ten metod wstrzyma simulację doświadczenia, jeśli jest ona uruchomiona, zawiesza fizykę i skrypcje. Simulacja może być uruchomiona używając Run() lub przycisku Run w Studio; gdy simulacja jest wstrzymana, IsRunning() zwraca 1> false
Zwroty
Run
Ten metod wykonuje symulację doświadczenia (fizyka i skrypcje). Gdy symulacja jest uruchomiona, IsRunning() zwraca true. Jnak, IsRunMode() zwraca tylko 2> true2>, jeśli sym
Zwroty
Stop
Ten metod zaprzestaje symulacji doświadczenia, jeśli jest on uruchomiony. Gdy symulacja jest zatrzymana, IsRunning() zwraca false i IsEdit() zwraca 2>5> Class.RunService:Is5> .
W przeciwieństwie do przycisku Zatrzymaj w Studio, wywołanie tej metody nie przywróci doświadczenia do stanu, w którym było przed uruchomieniem symulacji. Oznacza to, że wszelkie zmiany dokonane dla doświadczenia przez symulację fizyczną i skrypcity będą trwać po zakończeniu simulacji.
Zwroty
UnbindFromRenderStep
Dane imię funkcji wysłane do BindToRenderStep() , ten metod będzie odłączyć funkcję od bycia wezwywanym podczas PreRender . To jest używane do odłączenia związanych funkcji, gdy nie są już potrzebne, lub gdy nie są już potrzebne do uruchomienia każdego kroku.
Jeśli nie jest funkcji związanej z podanym nazwiskiem, ten metodowy nie podejmuje działań i kontynuuje bez wzrostu błędu.
Parametry
Nazwa funkcji, która nie jest związana.
Zwroty
Zdarzenia
Heartbeat
Wydarzenie Heartbeat każdego klatki zdjęcia, po zakończeniu symulacji fizycznej. Argument deltaTime określa czas, który minął od poprzedniego klatki zdjęcia.
To wydarzenie jest, gdy większość skryptów zostanie wykonana. Dzieje się to na końcu każdego klatki i jest to również czas, w którym każde czekające skrypt są wykonane, takie jak te zaplanowane z biblioteką task. Heartbeat jest powszechnie używany do zadań okresowych, takich jak aktualizacja rdzeniowych systemów gry, takich jak regeneracja zdrowia.
Następnie silnik wysyła aktualizacje właściwości i wydarzenia na serwer lub klienty, które później otrzymywane są jako część kroku replikacji otrzymywania kroku.
Parametry
Czas (w sekundach) od upływu poprzedniego klatkę.
PostSimulation
Wydarzenie PostSimulation każdego klatki, po zakończeniu symulacji fizycznej. Indykalizuje czas, który upłynął od poprzedniego klatki.
Ten ewent jest przydatny do dokonania ostatecznych dostosowań do wyniku symulacji. Po tym etapie silnik wyzwala wydarzenie Heartbeat.
Parametry
Czas (w sekundach) od upływu poprzedniego klatkę.
PreAnimation
Wydarzenie PreAnimation każdego klatki zadaje się przed symulacją fizyczną, ale po renderowaniu. Arгумент deltaTimeSim wskazuje czas minął od poprzedniego klatki.
Ten wątek jest przydatny do modyfikacji obiektów animacji, takich jak dostosowanie ich szybkości lub priorytetu. Po zakończeniu wydarzenia PreAnimation zasilanie silnika wykonuje te animacje, aktualizując wspólne transformacje, które później zostaną użyte do aktualizacji obiektów podczas symulacji fizycznej.
Po zakończeniu animacji silnik wywołuje wydarzenie PreSimulation.
Parametry
Czas (w sekundach) od upływu poprzedniego klatkę.
PreRender
Wydarzenie PreRender (równoznaczne z Class.RunService.RenderStepped|RenderStepped) uruchamia każdą klatkę, zanim klatka zostanie renderowana. Arгумент deltaTimeRender wskazuje czas, który upłynął od poprzedniej klatki.
Ten wydarzenie umożliwia uruchomienie kodu i aktualizację świata, zanim zostanie ona wyświetlona na ekranie gracza. Jest to przydatne dla ostatnich korekt, takich jak zmiana pozycji obiektu, aktualizacja animacji lub przygotowanie efektów wizualnych, ale należy używać go rozsądnie, ponieważ silnik nie może zacząć renderowania ramy, dopóki kod w tym wydarzeniu nie zostanie wykonany.
Ponieważ PreRender jest stroną klienta, może być używany tylko w LocalScript , w ModuleScript wymagającym 2>Class.LocalScript2> lub w 5>Class.Script5> z ustawieniem 8>Class
Po fazie PreRender następuje fazja simulacyjna z wydarzeniem PreAnimation.
Parametry
Czas (w sekundach) od upływu poprzedniego klatkę.
PreSimulation
Wydarzenie PreSimulation (równoznaczne z Stepped ) w każdym klatku zaczyna się przed symulacją fizyczną. Arгумент deltaTimeSim wskazuje czas, który minął od poprzedniego klatku.
Ten wątek jest przydatny do dostosowania właściwości, takich jak prędkość lub siła, zanim zostaną one zastosowane jako część symulacji. Następnie uruchomienie symulacji wykonane zostanie, potencjalnie wiele razy, jak rozwiązanie fizyczne biegnie z większą częstotliwością niż inne systemy silnikowe. Po zakończeniu tego wątku wydarzenie PostSimulation zost
Parametry
Czas (w sekundach) od upływu poprzedniego klatkę.
RenderStepped
Wydarzenie RenderStepped (równoznaczne z PreRender ) każdego klatki zostanie uruchomione, zanim klatka zostanie renderowana. Arгумент deltaTime określa czas, który minął od poprzedniej klatki.
Ten wydarzenie umożliwia uruchomienie kodu i aktualizację świata, zanim zostanie ona wyświetlona na ekranie gracza. Jest to przydatne dla ostatnich korekt, takich jak zmiana pozycji obiektu, aktualizacja animacji lub przygotowanie efektów wizualnych, ale należy używać go rozsądnie, ponieważ silnik nie może zacząć renderowania ramy, dopóki kod w tym wydarzeniu nie zostanie wykonany.
Ponieważ RenderStepped jest stroną klienta, może być używany tylko w LocalScript , w ModuleScript wymagającym 2>Class.LocalScript2> lub w 5>Class.Script5> z ustawieniem
Po fazie RenderStepped następuje fazja simulacyjna z wydarzeniem PreAnimation.
Parametry
Czas (w sekundach) od upływu poprzedniego klatkę.
Stepped
Wydarzenie Stepped (równivalne z PreSimulation ) uruchamia każde klatki, zanim nastąpi symulacja fizyczna. Argument deltaTime określa czas minął od poprzedniego klatki.
Ten wątek jest przydatny do dostosowania właściwości, takich jak prędkość lub siła, zanim zostaną one zastosowane jako część symulacji. Następnie uruchomienie symulacji wykonane zostanie, potencjalnie wiele razy, jak rozwiązanie fizyczne biegnie z większą częstotliwością niż inne systemy silnikowe. Po zakończeniu tego wątku wydarzenie PostSimulation zost
Parametry
Czas (w sekundach) trwania RunService jest już uruchomiony.
Czas (w sekundach) od upływu poprzedniego klatkę.