RunService

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat
Layanan
Tidak Direplikasi

RunService berisi metode dan acara untuk manajemen waktu serta manajemen konteks di man

RunService juga menyimpan acara yang memungkinkan kode Anda untuk mematuhi atas frame-by-frame loop Roblox

Hasil Tester Konteks

<tbody>
<tr>
<td>Pemain Langsung</td>
<td><code>false</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Server Langsung</td>
<td><code>false</code></td>
<td><code>false</code></td>
<td><code>benar</code></td>
<td />
<td />
<td />
</tr>
<tr>
<td>Mode Edit</td>
<td><code>benar</code></td>
<td><code>benar</code></td>
<td><code>benar</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
<td><code>false</code></td>
</tr>
<tr>
<td>Edit Kerjasama</td>
<td><code>benar</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
<td><code>false</code></td>
</tr>
<tr>
<td>Jalankan Mode</td>
<td><code>benar</code></td>
<td><code>benar</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
<td><code>benar</code></td>
<td><code>benar</code></td>
</tr>
<tr>
<td>Mode Bermain (Klien)</td>
<td><code>benar</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
<td><code>false</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
</tr>
<tr>
<td>Mode Bermain (Server)</td>
<td><code>benar</code></td>
<td><code>false</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
<td><code>benar</code></td>
<td><code>benar</code></td>
</tr>
<tr>
<td>Tes Tim (Pemain)</td>
<td><code>benar</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
<td><code>false</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
</tr>
<tr>
<td>Pengujian Tim (Server)</td>
<td><code>false</code></td>
<td><code>false</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
<td><code>benar</code></td>
<td><code>false</code></td>
</tr>
</tbody>
Latar belakang Class.RunService:IsStudio()|IsStudioIsClientIsServerIsEditIsrunningIsRunMode

Rangkuman

Properti

Metode

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

    Diberikan nama string fungsi dan prioritas, metode ini menyambungkan fungsi ke RunService.PreRender .

  • Tulis Paralel

    Mengembalikan apakah lingkungan saat ini berjalan di klien.

  • Keamanan Plugin
    Tulis Paralel

    Mengembalikan apakah lingkungan saat ini berada dalam mode Edit .

  • Tulis Paralel

    Mengembalikan apakah tombol Run telah ditekan untuk mengeksekusi simulasi di Studio.

  • Mengembalikan apakah pengalaman sedang berjalan.

  • Tulis Paralel

    Mengembalikan apakah lingkungan saat ini berjalan di server.

  • Tulis Paralel

    Mengembalikan apakah lingkungan saat ini dijalankan di Studio.

  • Pause():void
    Keamanan Plugin

    Menghentikan simulasi pengalaman jika itu berjalan, menghentikan fisika dan skrip.

  • Run():void
    Keamanan Plugin

    Melakukan simulasi game, mengeksekusi fisika dan skrip.

  • Stop():void
    Keamanan Plugin

    Menghentikan simulasi pengalaman jika itu berjalan.

  • Mengubah fungsi yang terikat pada loop render menggunakan RunService:BindToRenderStep() .

Acara

Properti

ClientGitHash

Hanya Baca
Tidak Direplikasi
Keamanan Skrip Roblox
Baca Paralel
Tidak Direplikasi
Keamanan Plugin
Baca Paralel

Metode

BindToRenderStep

void

Fungsi BindToRenderStep() menyambungkan fungsi khusus untuk dipanggil pada waktu tertentu selama langkah render. Ada tiga argumen utama: name, priority, dan apa 1> function1> untuk dipanggil.

Karena terkait proses render klien, BindToRenderStep() hanya dapat diakses di klien.

Nama

Parameter name adalah label untuk binding dan dapat digunakan dengan RunService:UnbindFromRenderStep() jika binding tidak lagi dibutuhkan.


local RunService = game:GetService("RunService")
local function functionToBind() end
-- Ikat fungsi di atas ke binding bernama "tempBind"
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- Nonaktifkan fungsi yang terikat untuk "tempBind"
RunService:UnbindFromRenderStep("tempBinding")
Prioritas

priority dari binding adalah angka; itu menentukan kapan selama langkah render untuk memanggil fungsi khusus. Angka bawah ini menentukan kapan fungsi khusus akan dipanggil. Jika dua binding memiliki prioritas yang sama, mesin Roblox akan secara acak memilih salah satu untuk dijalankan pertama. Skrip kontrol default Roblox berjalan dengan prioritas berikut:

  • Masukan Pemain: 100
  • Kontrol Kamera: 200 Untuk kenyamanan;册 Enum.RenderPriority dapat digunakan untuk menentukan nilai angka untuk menetapkan batas. Misalnya, untuk menetapkan batas kanan sebelum pembaruan kamera default, hanya kurangkan 1 dari levelprioritas kamera.

Saat menggunakan Enum.RenderPriority, ingatlah untuk menggunakan .Value di akhir daftar枚. RunService:BindToRenderStep() tidak akan berfungsi jika hanya daftar枚 digunakan memiliki.


local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- Kode di sini akan berjalan sebelum naskah kamera Roblox default
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
Fungsi Kustom dan Waktu Delta

Argumen terakhir ( function ) adalah fungsi kustom untuk dipanggil. Fungsi ini akan diberikan satu parameter bernama deltaTime yang menunjukkan berapa banyak waktu yang dilewati antara awal langkah render sebelumnya dan awal langkah render saat ini.

Semua pembaruan render akan menunggu sampai kode di render step selesai. Pastikan bahwa setiap kode yang dipanggil oleh BindToRenderStep() berjalan dengan cepat dan efisien; jika kode memakan waktu terlalu lama, visual pengalaman akan berantakan.

Parameter

name: string

Label untuk binding yang dapat digunakan dengan Unbind jika binding tidak lagi dibutuhkan.

priority: number

Prioritas dari binding sebagai angka; itu menentukan kapan selama langkah render untuk memanggil fungsi khusus. Angka yang lebih rendah ini menentukan kapan selama langkah render untuk memanggil fungsi khusus. Jika dua binding memiliki prioritas yang sama, mesin Roblox akan secara acak memilih salah satu untuk dijalankan terlebih dahulu.

function: function

Fungsi khusus yang dibindung.


Memberikan nilai

void

Contoh Kode

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

Tulis Paralel

Jika kode yang mengeksekusi metode ini berjalan dalam konteks klien (dalam LocalScript , dalam ModuleScript yang diperlukan o

Jika metode ini mengembalikan true, lingkungan saat ini dapat mengakses fitur klien-only seperti RunService.PreRender atau Players.LocalPlayer.


Memberikan nilai

Apakah lingkungan saat ini menjalankan klien.

IsEdit

Keamanan Plugin
Tulis Paralel

Metode ini mengembalikan apakah lingkungan saat ini dalam mode "edit", misalnya di Studio ketika pengalaman tidak berjalan.

IsEdit() akan mengembalikan kebalikan dari IsRunning() , kecuali ketika simulasi telah dihentikan, di mana kedua metode akan mengembalikan false .


Memberikan nilai

Apakah lingkungan saat ini dalam mode "edit".

IsRunMode

Tulis Paralel

Metode ini mengembalikan apakah tombol Run telah ditekan untuk mengeksekusi simulasi di Studio. Ini akan terus mengembalikan true jika simulasi telah dihentikan menggunakan tombol Pause; namun, setelah dihentikan menggunakan tombol 2> Stop2>, itu akan kembali ke menyediakan 5>

Catat bahwa Studio hanya memasuki mode "jalankan" ketika tombol Jalankan ditekan, bukan tombol Mainkan. Juga catat bahwa metode ini akan mengembalikan false jika simulasi dimulai menggunakan 2> 5> Class.RunService:Run() 5> daripada tombol 8> 1>Mainkan1>.


Memberikan nilai

Apakah tombol Run telah ditekan untuk mengeksekusi simulasi di Studio.

IsRunning

Mengembalikan apakah pengalaman sedang berjalan, yang berarti simulasi telah dijalankan menggunakan tombol Lari atau Mainkan.

IsRunning() akan selalu mengembalikan kebalikan dari IsEdit() kecuali ketika simulasi telah dihentikan, di mana kedua metode akan mengembalikan false .


Memberikan nilai

Apakah pengalaman saat ini berjalan.

IsServer

Tulis Paralel

Metode ini mengembalikan apakah lingkungan saat ini berjalan di server. Jika kode yang mengaktifkan metode ini berjalan di konteks server (dalam

Jika fungsi ini mengembalikan true, maka lingkungan saat ini dapat mengakses fitur server-only seperti ServerStorage atau ServerScriptService .


Memberikan nilai

Apakah lingkungan saat ini berjalan di server.

IsStudio

Tulis Paralel

Metode ini mengembalikan apakah lingkungan saat ini berjalan di Studio. Ini dapat digunakan untuk mengemas kode yang hanya harus dijalankan saat diuji di Studio.


Memberikan nilai

Apakah lingkungan saat ini berjalan di Studio.

Pause

void
Keamanan Plugin

Metode ini menghentikan simulasi pengalaman jika itu berjalan, menyusupkan fisika dan skrip. Simulasi dapat dimulai menggunakan Run() atau tombol Run di Studio; ketika simulasi dihentikan, IsRunning() akan mengembalikan 1> false1> .


Memberikan nilai

void

Run

void
Keamanan Plugin

Metode ini mengeksekusi simulasi pengalaman (fisika dan skrip). Saat simulasi berjalan, IsRunning() akan mengembalikan true . Namun, IsRunMode() hanya akan mengembalikan 2> true2>


Memberikan nilai

void

Stop

void
Keamanan Plugin

Metode ini menghentikan simulasi pengalaman jika itu berjalan. Saat simulasi dihentikan, IsRunning() akan mengembalikan false dan IsEdit() akan mengembalikan 2>5> Class.RunService:IsEdit()|IsRun()5> .

Sebagai lawan dari tombol Berhenti di Studio, menyebut metode ini tidak akan mengembalikan pengalaman ke kondisi di mana itu berada sebelum simulasi dijalankan. Ini berarti setiap perubahan yang dibuat pada pengalaman oleh simulasi fisika dan skrip akan bertahan setelah simulasi berakhir.


Memberikan nilai

void

UnbindFromRenderStep

void

Diberikan nama fungsi yang dikirim ke BindToRenderStep() , metode ini akan menghapus fungsi dari menjadi panggil selama PreRender . Ini digunakan untuk menghapus fungsi yang tidak lagi dibutuhkan, atau ketika mereka tidak lagi perlu mengeksekusi setiap langkah.

Jika tidak ada fungsi yang terikat dengan nama yang diberikan, metode ini tidak mengambil tindakan dan melanjutkan tanpa menimbulkan kesalahan.

Parameter

name: string

Nama fungsi yang tidak bergantung.


Memberikan nilai

void

Acara

Heartbeat

Acara Heartbeat setiap frame, setelah simulasi fisik selesai. deltaTime argument menunjukkan waktu yang telah berlalu sejak frame sebelumnya.

Acara ini terjadi ketika sebagian besar script dijalankan. Ini terjadi di akhir setiap frame dan ini juga ketika setiap script tertunda yang dijalankan, seperti yang direncanakan dengan task library. Heartbeat sering digunakan untuk tugas periode, seperti menyelesaikan sistem game utama seperti regenerasi kesehatan.

Setelah langkah ini, mesin mengirim pembaruan status dan acara ke server atau klien yang nantinya diterima sebagai bagian dari langkah replikasi yang diterima.

Parameter

deltaTime: number

Waktu (dalam detik) yang telah berlalu sejak frame sebelumnya.


PostSimulation

Acara PostSimulation menyetel setiap frame, setelah simulasi fisik telah selesai. deltaTimeSim argument menunjukkan waktu yang telah berlalu sejak frame sebelumnya.

Acara ini berguna untuk membuat penyesuaian terakhir pada hasil simulasi. Setelah fase ini, mesin mengaktifkan acara Heartbeat.

Parameter

deltaTimeSim: number

Waktu (dalam detik) yang telah berlalu sejak frame sebelumnya.


PreAnimation

Acara PreAnimation mengaktifkan setiap frame, sebelum simulasi fisika tetapi setelah render. deltaTimeSim argument menunjukkan waktu yang telah berlalu sejak frame sebelumnya.

Acara ini berguna untuk mengubah objek animasi, seperti menyesuaikan kecepatan atau prioritas mereka. Setelah acara PreAnimation selesai, mesin akan melanjutkan mengeksekusi animasi ini, menyetel ulang transformasi bersama yang kemudian akan digunakan untuk memperbarui objek selama simulasi fisik.

Setelah animasi dijalankan, mesin mengaktifkan acara PreSimulation .

Parameter

deltaTimeSim: number

Waktu (dalam detik) yang telah berlalu sejak frame sebelumnya.


PreRender

Acara PreRender (setara dengan RenderStepped ) mengeksekusi setiap frame, sebelum frame di render. deltaTimeRender argument menunjukkan waktu yang telah berlalu sejak frame sebelumnya.

Acara ini memungkinkan Anda untuk mengeksekusi kode dan menyetel dunia sebelum ditunjukkan di layar pemain. Ini berguna untuk penyesuaian tingkat terakhir seperti mengubah posisi objek, menyetel animasi, atau menyiapkan efek visual, tetapi itu harus digunakan dengan hati-hati karena mesin tidak dapat memulai mengeksekusi frame sampai kode berjalan dalam acara ini telah selesai mengeksekusi

Karena PreRender adalah sisi klien, itu hanya dapat digunakan dalam LocalScript , di ModuleScript yang diperlukan oleh 1> Class.LocalScript1> , atau di <

Setelah fase PreRender, fase simulasi dimulai dengan acara PreAnimation.

Parameter

deltaTimeRender: number

Waktu (dalam detik) yang telah berlalu sejak frame sebelumnya.


PreSimulation

Acara PreSimulation (setara dengan Stepped ) menyetel setiap frame, sebelum simulasi fisik. deltaTimeSim argument menunjukkan waktu yang telah berlalu sejak frame sebelumnya.

Acara ini berguna untuk menyesuaikan propperti seperti kecepatan atau kekuatan hanya sebelum mereka diterapkan sebagai bagian dari simulasi. Simulasi kemudian dijalankan, mungkin beberapa kali, ketika solver fisika berjalan pada frekuensi yang lebih tinggi daripada sistem mesin lainnya. Setelah ini selesai, acara PostSimulation diaktifkan.

Parameter

deltaTimeSim: number

Waktu (dalam detik) yang telah berlalu sejak frame sebelumnya.


RenderStepped

Acara RenderStepped (setara dengan PreRender ) mengeksekusi setiap frame, sebelum frame di render. deltaTime argument menunjukkan waktu yang telah berlalu sejak frame sebelumnya.

Acara ini memungkinkan Anda untuk mengeksekusi kode dan menyetel dunia sebelum ditunjukkan di layar pemain. Ini berguna untuk penyesuaian tingkat terakhir seperti mengubah posisi objek, menyetel animasi, atau menyiapkan efek visual, tetapi itu harus digunakan dengan hati-hati karena mesin tidak dapat memulai mengeksekusi frame sampai kode berjalan dalam acara ini telah selesai mengeksekusi

Karena RenderStepped adalah pihak klien, itu hanya dapat digunakan dalam LocalScript , di ModuleScript yang diperlukan oleh 1> Class.LocalScript1> , atau

Setelah fase RenderStepped, fase simulasi dimulai dengan acara PreAnimation.

Parameter

deltaTime: number

Waktu (dalam detik) yang telah berlalu sejak frame sebelumnya.


Stepped

Acara Stepped (setara dengan PreSimulation ) mengeksekusi setiap frame, sebelum simulasi fisik. deltaTime argument menunjukkan waktu yang telah berlalu sejak frame sebelumnya.

Acara ini berguna untuk menyesuaikan propperti seperti kecepatan atau kekuatan hanya sebelum mereka diterapkan sebagai bagian dari simulasi. Simulasi kemudian dijalankan, mungkin beberapa kali, ketika solver fisika berjalan pada frekuensi yang lebih tinggi daripada sistem mesin lainnya. Setelah ini selesai, acara PostSimulation diaktifkan.

Parameter

time: number

Durasi (dalam detik) bahwa RunService telah berjalan selama.

deltaTime: number

Waktu (dalam detik) yang telah berlalu sejak frame sebelumnya.