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 menjadwalkan penghancuran objek yang dijamin tanpa menyerah.

Manfaat

Selain membuat sedikit kekacauan, objek yang tidak lagi diperlukan dapat menggunakan memori sistem dan menyebabkan pengalaman berjalan lebih lambat seiring waktu.Untuk alasan ini, selalu disarankan untuk memanggil Instance:Destroy() pada objek yang tidak lagi Anda butuhkan.Namun, dalam beberapa kasus, objek mungkin memiliki periode kegunaan tertentu sebelum dapat dihancurkan.

Pertimbangkan dinding dihancurkan menjadi bata individu.Jika Anda ingin batu bata tetap selama 3 detik sebelum hancur, Anda dapat menggunakan kode berikut:


task.wait(3)
brick:Destroy()

Namun, menunggu menyebabkan thread menghasilkan yang mungkin tidak diinginkan.Untuk menghindari menyerah, fungsi panggil balasan dapat dijadwalkan untuk dijalankan pada thread baru setelah 3 detik:


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

Atau dalam satu baris:


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

Meskipun ini sekarang menghindari menyerah, ia memiliki kekurangan potensial dalam kenyataan bahwa panggilan balasan yang dijadwalkan tidak akan pernah dijalankan jika skrip dinonaktifkan atau dihancurkan sebelum panggilan balasan dijalankan.

Di sinilah Debris memiliki keuntungan khusus, karena tidak menghasilkan thread saat ini dan dijalankan di luar konteks skrip, menjamin instansi akhirnya hancur bahkan jika skrip dinonaktifkan atau dihancurkan.Kode berikut tidak menghasilkan dan menjamin instansi akan hancur:


Debris:AddItem(brick, 3)

Perhatikan bahwa Debris memiliki batas maksimum yang diperhitungkan 1,000 objek, jadi jika lebih dari 1,000 item ditambahkan, sampah tertua akan hancur seketika untuk membuat ruang untuk sampah baru.

Contoh Kode

Creates parts on a loop and parents them to the Workspace, then uses Debris.AddItem to clean them up.

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

()

Jadwalkan Instance tertentu untuk penghancuran dalam masa hidup yang ditentukan.Setelah argumen lifetime berlalu, objek dihancurkan dengan cara yang sama dengan Instance:Destroy() .Perhatikan bahwa argumen lifetime opsional dan default ke 10 detik.

Perhatikan bahwa Debris memiliki batas maksimum yang diperhitungkan 1,000 objek, jadi jika lebih dari 1,000 item ditambahkan, sampah tertua akan hancur seketika untuk membuat ruang untuk sampah baru.Ini berarti Anda harus memperlakukan parameter sebagai masa hidup maksimum, bukan masa hidup yang tepat.

Parameter

item: Instance

The Instance untuk menambahkan ke Debris .

Nilai Default: ""
lifetime: number

Jumlah detik sebelum Instance harus dihancurkan.

Nilai Default: 10

Memberikan nilai

()

Contoh Kode

Creates parts on a loop and parents them to the Workspace, then uses Debris.AddItem to clean them up.

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