RunService

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Hizmet
Çoğaltılmamış

RunService süre yönetimi ve bir deneyimin veya senaryonun çalıştığı konteyner yönetimi için yöntemler ve olaylar da içerir.IsClient() , IsServer() ve IsStudio() gibi yöntemler, hangi senaryo kodunun çalıştığını belirlemenize yardımcı olabilir.Bu yöntemler, hem istemci hem de sunucu kodları tarafından gerekli olabilecek ModuleScripts için yararlıdır.Ayrıca, IsStudio() İçeri-Studio testi için özel davranışlar eklemek için kullanılabilir.

RunService ayrıca kodun Roblox'un çerçeve‑by‑çerçeve döngüsüne uymasına izin veren olayları da evler, örneğin PreRender , PreAnimation , PreSimulation , PostSimulation ve Heartbeat .Herhangi bir durum için kullanılacak doğru olayı seçmek önemlidir, bu yüzden bilinçli bir karar vermek için Görev Planlayıcısı okumalısınız.

Kontekst Test Sonuçları

<th><code>Class.RunService:IsStudio()|IsStudio</code></th>
<th><code>Class.RunService: IsClient()|IsClient</code></th>
<th><code>Class.RunService: IsServer()|IsServer</code></th>
<th><code>Sınıf.RunService:IsEdit()|IsEdit</code></th>
<th><code>Class.RunService:IsRunning()|IsRunning|Yürütülüyor</code></th>
<th><code>Sınıf.RunService:IsRunMode()|IsRunMode</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>Canlı Oyuncu</td><td><code>false</code> ></td><td><code>true</code> ></td><td><code>false</code> ></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Canlı Sunucu</td><td><code>yok</code></td><td><code>yok</code></td><td><code>doğru</code></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Düzenleme Modu</td>
<td><code>doğru</code></td>
<td><code>doğru</code></td>
<td><code>doğru</code></td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
<td><code>sahte</code></td>
</tr>
<tr>
<td>İşbirliği Düzenleme</td>
<td><code>doğru</code></td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
<td><code>sahte</code></td>
</tr>
<tr>
<td>Koşma Modu</td>
<td><code>doğru</code></td>
<td><code>doğru</code></td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
<td><code>doğru</code></td>
<td><code>doğru</code></td>
</tr>
<tr>
<td>Oyun Modu (Müşteri)</td>
<td><code>doğru</code></td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
<td><code>sahte</code></td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
</tr>
<tr>
<td>Oyun Modu (Sunucu)</td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
<td><code>doğru</code></td>
<td><code>doğru</code></td>
</tr>
<tr>
<td>Takım Testi (Oyuncu)</td>
<td><code>doğru</code></td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
<td><code>sahte</code></td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
</tr>
<tr>
<td>Takım Testi (Sunucu)</td>
<td><code>sahte</code></td>
<td><code>sahte</code></td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
<td><code>doğru</code></td>
<td><code>sahte</code></td>
</tr>
</tbody>
Çevre

Özet

Özellikler

Yöntemler

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

    Bir işlevin isim ve önceliği verildiğinde, bu yöntem işlevi RunService.PreRender 'ye bağlar.

  • Paralel yaz

    Mevcut çevrenin istemci üzerinde çalışıp çalışmadığını döndürür.

  • Eklenti Güvenliği
    Paralel yaz

    Mevcut çevrenin Edit modunda olup olmadığını döndürür.

  • Paralel yaz

    Studio'da simülasyonu çalıştırmak için Çalıştır düğmesine basılıp basılmadığını döndürür.

  • Deneyimin şu anda çalışıp çalışmadığını döndürür.

  • Paralel yaz

    Mevcut çevrenin sunucuda çalışıp çalışmadığını iade eder.

  • Paralel yaz

    Mevcut çevrenin Studio'da çalışıp çalışmadığını döndürür.

  • Pause():()
    Eklenti Güvenliği

    Deneyimin simülasyonunu durdurur, fiziği ve senaryoları askıya alır, eğer çalışıyorsa.

  • Run():()
    Eklenti Güvenliği

    oyunsimülasyonunu yürütür, fiziği ve senaryoları yürütür.

  • Stop():()
    Eklenti Güvenliği

    Deneyimin simülasyonunu durdurur, eğer çalışıyorsa.

  • Render döngüsüne bağlanmış bir işlevi RunService:BindToRenderStep() kullanarak bağlantıdan kaldırır.

Etkinlikler

Özellikler

ClientGitHash

Salt Okunur
Çoğaltılmamış
Roblox Betik Güvenliği
Paralel oku
Çoğaltılmamış
Eklenti Güvenliği
Paralel oku

Yöntemler

BindToRenderStep

()

The BindToRenderStep() işlevi, render adımı sırasında belirli bir zamanda çağrılacak özel bir işlev bağlar.Üç ana argüman var: name , priority ve neyi çağırmak gerekiyor function .

Müşterinin renderleme sürecine bağlı olduğundan, BindToRenderStep() yalnızca müşteride çağrılabilir.

Adı

name parametri, bağlantı için bir etikettir ve bağlantı artık gerekmediğinde RunService:UnbindFromRenderStep() ile kullanılabilir.


local RunService = game:GetService("RunService")
local function functionToBind() end
-- Yukarıdaki işlevi "tempBinding" adlı bağlantıya bağlayın
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- "tempBinding"ye bağlı işlevin bağlantısını kesin
RunService:UnbindFromRenderStep("tempBinding")
Öncelik

Bağlantının priority kısmı bir tamsayıdır; render adımı sırasında özel işlevi çağırma zamanını belirler.Bu sayı daha düşük olursa, özel işlev daha erken çağrılacaktır.Eğer iki bağlantı aynı önceliğe sahipse, Roblox Motoru rastgele ilk çalışacak birini seçecektir.Varsayılan Roblox kontrol senaryoları bu özel önceliklerle çalışır:

  • Oyuncu Girişi: 100
  • Kamera Kontrolleri: 200 Uygunluk için; Enum.RenderPriority sayısal değeri belirlemek için bağlantı ayarlamak için kullanılabilen enum kullanılabilir.Örneğin, varsayılan kamera güncellemesinden önce bağlantı hakkı yapmak için, kameranın öncelik seviyesinden basitçe 1 çıkarın.

Enum.RenderPriority kullanırken, arzu edilen enuma sonunda .Value kullanmayı unutmayın. RunService:BindToRenderStep() sadece enuma sahip olbaşına kullanılırsa çalışmayacaktır.


local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- Buradaki kod, varsayılan Roblox kamera senaryosundan önce çalışacaktır
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
Özel Fonksiyon ve Delta Süresi

Son argüman ( function ) çağrılacak özel işlevdir.Bu işlev, önceki render adımının başlangıcından ve mevcut render adımının başlangıcından ne kadar süre geçtiğini gösteren bir deltaTime parametre geçecektir.

Tüm render güncellemeleri, render adımındaki kod bitene kadar bekleyecektir.Herhangi bir BindToRenderStep() tarafından çağrılan kodun hızlı ve verimli bir şekilde çalıştığından emin olun; eğer kod çok uzun sürerse, deneyim görüntüleri kaba olacaktır.

Parametreler

name: string

Bağlantı yapılabilen etiket, bağlantı artık gerekmiyorsa Unbind ile kullanılabilir.

Varsayılan değer: ""
priority: number

Bağlantının bir bütün olarak önceliği; render adımı sırasında özel işlevi çağırmak için ne zaman olduğunu belirler.Bu sayı daha düşük olursa, özel işlev daha erken çağrılacaktır.Eğer iki bağlantı aynı önceliğe sahipse Roblox Motoru rastgele birini ilk çalıştırmak için seçecektir.

Varsayılan değer: ""
function: function

Bağlanan özel işlev.

Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

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

Paralel yaz

Bu yöntemi çağıran kod bir istemci bağlamında çalışıyorsa (bir LocalScript , bir ModuleScript gerektiren bir LocalScript , veya bir Script ile RunContext ayarlanmış bir Enum.RunContext.Client ), bu yöntem true döndürecektir.Diğer tüm durumlarda, bu yöntem false döndürecektir.

Bu yöntem true döndürürse, mevcut çevre, RunService.PreRender veya Players.LocalPlayer gibi yalnızca istemciye ait özelliklere erişebilir.


Dönüşler

Mevcut çevrenin istemciyi çalıştırıp çalışmadığı.

IsEdit

Eklenti Güvenliği
Paralel yaz

Bu yöntem, mevcut çevrenin "düzenle" modunda olup olmadığını döndürür, örneğin Studio'da deneyim çalışmıyorsa.

IsEdit() simülasyon duraklatıldığında hariç, tersini döndürecektir IsRunning() , bu durumda her iki yöntem de false geri dönecektir.


Dönüşler

Mevcut çevre "düzenle" modundayken.

IsRunMode

Paralel yaz

Bu yöntem, Çalıştırma düğmesinin Studio'da simülasyonu çalıştırmak için basılıp basılmadığını döndürür.Simülasyon düğmesi kullanılarak duraklatıldığında geri dönmeye devam edecek; ancak, Durdur düğmesini kullanarak durdurulduktan sonra, geri dönmeye dönecek .

Studio'nun yalnızca Çal düğmesine basıldığında "çalıştır" moduna girdiğini unutmayın, Oyna düğmesine değil.Ayrıca, bu yöntemin simülasyonu çalıştırmak yerine çalıştırmak düğmesini kullanarak başlatıldığında döneceğini unutmayın.


Dönüşler

Çalıştır düğmesinin Studio'da simülasyonu çalıştırmak için basılmış olup olmadığı.

IsRunning

Deneyimin şu anda çalışıp çalışmadığını döndürür, yani simülasyon Çalıştır veya Oyna düğmeleri kullanılarak çalıştırıldı.

IsRunning() daima simülasyon duraklatıldığında istisna dışında IsEdit() 'nin tersini geri verecektir, bu durumda her iki yöntem de false dönecektir.


Dönüşler

Deneyimin şu anda çalışıyor olup olmadığı.

IsServer

Paralel yaz

Bu yöntem, mevcut çevrenin sunucuda çalışıp çalışmadığını döndürür.Bu yöntemi çağıran kod bir sunucu bağlamında çalışıyorsa (bir Script ile RunContext set edilmiş Enum.RunContext.Server veya Enum.RunContext.Legacy , veya bir ModuleScript tarafından gerekli bir Script ), bu yöntem true döndürecektir.Diğer tüm durumlarda, bu yöntem false döndürecektir.

Bu işlev doğru dönerse, mevcut çevre, ServerStorage veya ServerScriptService gibi sunucu özel özelliklere erişebilir.


Dönüşler

Mevcut çevrenin sunucuda çalışıp çalışmadığı.

IsStudio

Paralel yaz

Bu yöntem, mevcut çevrenin Studio'da çalışıp çalışmadığını döndürür. Studio'da sadece test edildiğinde yürütülmesi gereken kodu sarma için kullanılabilir.


Dönüşler

Mevcut çevrenin Stüdyo'da çalışıp çalışmadığı.

Pause

()
Eklenti Güvenliği

Bu yöntem deneyimin simülasyonunu duraklatır, eğer çalışıyorsa fiziği ve senaryoları askıya alır.Simülasyon veya Studio'daki Çalıştır düğmesini kullanarak başlatılabilir; simülasyon duraklatıldığında, geri dönecektir.


Dönüşler

()

Run

()
Eklenti Güvenliği

Bu yöntem deneyimin simülasyonunu yürütür (fizik ve senaryolar).Simülasyon çalışırken, IsRunning() geri dönecek true .Ancak, sadece simülasyon Studio'daki Çalıştırma düğmesi kullanılarak başlatıldığında geri dönecektir.


Dönüşler

()

Stop

()
Eklenti Güvenliği

Bu yöntem deneyimin simülasyonunu durdurur, eğer çalışıyorsa.Simülasyon durdurulduğunda, geri dönecek ve geri dönecek .

Studio'daki Durdur düğmesine karşın, bu yöntemi çağırmak deneyimi, simülasyon yürütülmeden önceki durumuna geri getirmeyecektir.Bu, fiziği simülasyonu ve senaryoları tarafından deneyime yapılan herhangi bir değişiklik, simülasyon bitince süreklilik kazanacaktır.


Dönüşler

()

UnbindFromRenderStep

()

BindToRenderStep() adı verilen bir işlev gönderildiğinde, bu yöntem işlevin PreRender sırasında çağrılmasını bırakacaktır.Bu, bağlı işlevler artık gerekmediğinde veya her adımın ateşlenmesi gerekmediğinde bağlanmış işlevlerin bağlantısını kesmek için kullanılır.

Verilen isim tarafından bağlı işlev yoksa, bu yöntem herhangi bir eylem yapmaz ve bir hata yükseltmeden devam eder.

Parametreler

name: string

İşlevin bağlantısının kesildiği adı.

Varsayılan değer: ""

Dönüşler

()

Etkinlikler

Heartbeat

The Heartbeat etkinliği, fiziğin simülasyonu tamamlandıktan sonra her kare ateşlenir.The deltaTime argümanı, önceki çerçeveden beri geçen süreyi gösterir.

Bu olay çoğu kodun çalıştığı sırada gerçekleşir.Her kare sonunda meydana gelir ve ayrıca herhangi bir bekleme kodu çalıştırıldığında, örneğin task kütüphanesiyle planlananlardan.Heartbeat Düzenli görevler için yaygın olarak kullanılır, örneğin sağlık yenileme gibi temel oyun sistemlerini güncellemek.

Bu adımdan sonra, motor, özellik güncellemelerini ve olaylarını daha sonra yeniden yazma adımının bir parçası olarak alınan sunucuya veya müşterilere gönderir.

Parametreler

deltaTime: number

Önceki çerçeveden beri geçen süre (saniyeler).


PostSimulation

The PostSimulation etkinliği, fiziğin simülasyonu tamamlandıktan sonra her kare ateşlenir.The deltaTimeSim argümanı, mevcut çerçevenin fiziği simülasyonuna adım attığı süreyi gösterir, fiziği sınırlandırmayı hesaba katmaz.

Bu etkinlik, simulasyonun sonuçlarına son düzeltmeler yapmak için yararlıdır. Bu aşamadan sonra motor Heartbeat etkinliğini tetikler.

Parametreler

deltaTimeSim: number

Mevcut çerçevenin fiziği simülasyonuna adım attığı süre (saniyeler) ve fiziği sınırlandırmayı hesaba katmadan.


PreAnimation

The PreAnimation etkinliği, fiziğin simülasyonundan önce her kare ateşlenir, ancak renderden sonra.The deltaTimeSim argümanı, mevcut çerçeğin adımlı animasyona sahip olduğu süreyi gösterir.

Bu etkinlik, hızını veya önceliğini ayarlamak gibi animasyon nesnelerinin değiştirilmesi için yararlıdır.PreAnimation etkinliği tamamlandıktan sonra, motor bu animasyonları çalıştırır ve daha sonra fiziğin simülasyonu sırasında nesneleri güncelleştirmek için kullanılacak ortak dönüşümleri günceller.

Animasyonlar adımlandıktan sonra, motor PreSimulation etkinliğini tetikler.

Parametreler

deltaTimeSim: number

Mevcut çerçeğin adımlı animasyonlara sahip olduğu süre (saniyeler).


PreRender

The PreRender etkinliği (RenderStepped için değiştirme) her çerçeğin çizilmeden önce her çerçeği ateş eder.The deltaTimeRender argümanı, önceki çerçeveden beri geçen süreyi gösterir.

Bu etkinlik, kodu çalıştırmanızı ve bir oyuncunun ekranına çizilmeden önce dünyayı güncellemenizi sağlar.Bu, değişen nesne konumlarını değiştirmek, animasyonları güncellemek veya görsel efektler hazırlamak gibi son dakika ayarları için yararlıdır, ancak motor bu olayda çalışan kodun bitmesine kadar görsel efektleri renderlemeye başlayamayacağından tasarruflu bir şekilde kullanılmalıdır.

As PreRender , istemci tarafında olduğundan, sadece bir LocalScript , bir ModuleScript , bir LocalScript tarafından gerekli bir Script veya bir RunContext ile Enum.RunContext.Client içinde kullanılabilir.

PreRender fazının ardından, simülasyon fazı PreAnimation etkinliği ile başlar.

Parametreler

deltaTimeRender: number

Önceki çerçeveden beri geçen süre (saniyeler).


PreSimulation

The PreSimulation etkinliği (Stepped için değiştirme) fiziği simülasyonundan önce her kareyi ateş eder.deltaTimeSim argümanı, mevcut çerçevenin fiziği simülasyonuna adım atacağı süreyi gösterir, fiziği sınırlandırmayı hesaba katmaz.

Bu etkinlik, hız veya kuvvet gibi özellikleri, simülasyonun bir parçası olarak uygulanmadan önce ayarlamak için yararlıdır.Simülasyon daha sonra, muhtemelen birden fazla kez çalışır, çünkü fiziği çözücü diğer motor sistemlerinden daha yüksek frekansla çalışır.Bunlar tamamlandığında, PostSimulation etkinliği ateşlenir.

Parametreler

deltaTimeSim: number

Mevcut çerçevenin fiziği simülasyonuna adım atacağı süre (saniyeler) ve fiziği sınırlandırmayı hesaba katmadan.


RenderStepped

Her çerçeği, çerçeğin görüntülenmeden önce ateş eder.

Göç Notu

Bu olay yeni çalışma için kullanılması gereken PreRender tarafından geçersiz kılınmıştır.

Parametreler

deltaTime: number

Önceki çerçeveden beri geçen süre (saniyeler).


Stepped

Fiziği simülasyonundan önce her kareyi ateş eder.

Göç Notu

Bu olay yeni çalışma için kullanılması gereken PreSimulation tarafından geçersiz kılınmıştır.

Parametreler

time: number

RunService'nin çalıştığı süre (saniye).

deltaTime: number

Önceki çerçeveden beri geçen süre (saniyeler).