Debris
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
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
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
Rangkuman
Metode
Jadwal Instance tertentu untuk dihancurkan dalam masa hidup yang ditentukan.
Properti
Metode
AddItem
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
Memberikan nilai
Contoh Kode
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