Debris

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

Layanan Debris memungkinkan jadwal pemusnahan yang dijamin dari objek tanpa menyerah.

Keuntungan

Selain membuat sedikit keributan, objek yang tidak lagi diperlukan dapat menggunakan memori sistem dan menyebabkan pengalaman berjalan lebih lambat dalam waktu. Untuk alasan ini, selalu disarankan untuk memanggil Instance:Destroy() di objek yang Anda tidak lagi memerlukan. Dalam beberapa kasus, however, objek mungkin memiliki periode utilitas khusus sebelum dap

Pertimbangkan dinding dihancurkan menjadi individual bata. Jika Anda ingin bata tinggal selama 3 detik sebelum dihancurkan, Anda dapat menggunakan kode berikut:


task.wait(3)
brick:Destroy()

Namun, menunggu menyebabkan thread untuk menghasilkan yang mungkin tidak diinginkan. Untuk menghindari menghasilkan, fungsi panggilan dapat ditetapkan untuk dijalankan di thread baru setelah 3 detik:


task.delay(3, function()
brick:Destroy()
end)

Atau dalam satu baris:


task.delay(3, brick.Destroy, brick)

Sementara ini sekarang menghindari memberikan, itu memiliki potensi masalah dalam bahwa panggilan jadwal tidak akan pernah berjalan jika script dinonaktifkan atau dihancurkan sebelum panggilan berjalan.

Di sinilah Debris memiliki keunggulan khusus, karena tidak menghasilkan thread saat ini dan berjalan di luar konteks script, menjamin bahwa instansnya akhirnya dihancurkan bahkan jika script dinonaktifkan atau dihancurkan. Kode berikut tidak menghasilkan dan menjamin bahwa instansnya akhirnya dihancurkan:


Debris:AddItem(brick, 3)

Catat bahwa Debris memiliki batas maksimum 1.000 objek, jadi jika lebih dari 1.000 item ditambahkan, sampah tertua akan dihancurkan secara instan untuk membuat ruang untuk sampah baru.

Contoh Kode

Debris AddItem

local Debris = game:GetService("Debris")
local ball = Instance.new("Part")
ball.Anchored = false
ball.Shape = Enum.PartType.Ball
ball.TopSurface = Enum.SurfaceType.Smooth
ball.BottomSurface = Enum.SurfaceType.Smooth
ball.Size = Vector3.new(1, 1, 1)
local RNG = Random.new()
local MAX_VELOCITY = 10
while true do
local newBall = ball:Clone()
newBall.BrickColor = BrickColor.random()
newBall.CFrame = CFrame.new(0, 30, 0)
newBall.Velocity = Vector3.new(
RNG:NextNumber(-MAX_VELOCITY, MAX_VELOCITY),
0,
RNG:NextNumber(-MAX_VELOCITY, MAX_VELOCITY)
)
newBall.Parent = game.Workspace
Debris:AddItem(newBall, 2)
task.wait(0.1)
end

Properti

Metode

AddItem

void

Jadwal Instance tertentu untuk dihancurkan dalam waktu kehidupan yang ditentukan. Setelah argumen lifetime , objek dihancurkan dengan cara yang sama seperti Instance:Destroy() . Catat bahwa argumen 2> Lifetime2> adalah opsional dan bervariasi menjadi 10 detik.

Catat bahwa Debris memiliki batas maksimum 1.000 objek, jadi jika lebih dari 1.000 item ditambahkan, debu tertua akan dihancurkan secara instan untuk membuat ruang untuk debu baru. Ini berarti Anda harus menangani parameter lifetime sebagai batas waktu maksimum, bukan batas waktu tepat.

Parameter

item: Instance

Class.Instance untuk menambahkan ke Debris .

lifetime: number

Jumlah detik sebelum Instance harus dihancurkan.

Nilai Default: 10

Memberikan nilai

void

Contoh Kode

Debris AddItem

local Debris = game:GetService("Debris")
local ball = Instance.new("Part")
ball.Anchored = false
ball.Shape = Enum.PartType.Ball
ball.TopSurface = Enum.SurfaceType.Smooth
ball.BottomSurface = Enum.SurfaceType.Smooth
ball.Size = Vector3.new(1, 1, 1)
local RNG = Random.new()
local MAX_VELOCITY = 10
while true do
local newBall = ball:Clone()
newBall.BrickColor = BrickColor.random()
newBall.CFrame = CFrame.new(0, 30, 0)
newBall.Velocity = Vector3.new(
RNG:NextNumber(-MAX_VELOCITY, MAX_VELOCITY),
0,
RNG:NextNumber(-MAX_VELOCITY, MAX_VELOCITY)
)
newBall.Parent = game.Workspace
Debris:AddItem(newBall, 2)
task.wait(0.1)
end

Acara