Debris

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

Çöp hizmeti, bir nesneyi teslim etmeden garantili yıkımının planlanmasına izin verir.

Gelişmişlikler

Biraz karışıklık yaratmanın yanı sıra, artık gerekmeyen nesneler sistem belleğini tüketebilir ve zamanla deneyimin daha yavaş çalışmasına neden olabilir.Bu nedenle, artık ihtiyacınız olmayan nesneler için daima Instance:Destroy() 'yi aramanız önerilir.Ancak bazı durumlarda, bir nesnenin yok edilmeden önce belirli bir kullanım süresi olabilir.

Bir duvarın bireysel tuğlara parçalanmasını düşünün.Yok edilmeden önce 3 saniye boyunca kalacak bir tuğla istiyorsanız, aşağıdaki kodu kullanabilirsiniz:


task.wait(3)
brick:Destroy()

Ancak, beklemek istenmeyen bir sonuç veren iş parçacığının verilmesine neden olur.Pes etmekten kaçınmak için, bir geri çağrı işlevi 3 saniye sonra yeni bir işlemde çalıştırılabilir:


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

Veya bir satırda:


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

Bu şimdi teslim olmaktan kaçınırken, planlanan geri çağrı asla çalışmayacak çünkü senaryo devre dışı bırakıldığında veya çağrıdan önce yok edildiğinde, planlanan geri çağrı asla çalışmayacak.

Burada Debris özel bir avantaja sahiptir, çünkü mevcut iş parçasını vermez ve senaryonun bağlamının dışında çalışır, böylece senaryo devre dışı bırakılır veya yok edilirse bile instansın sonunda yok edilmesi garanti edilir.Aşağıdaki kod vermez ve instansın yok edileceğini garanti eder:


Debris:AddItem(brick, 3)

Debris 'nin 1,000 nesneye kadar sert kodlanmış bir maksimumu olduğunu unutmayın, bu nedenle 1,000'den fazla öğe eklendiğinde, en eski parçalar hemen yok edilir ve yeni parçalar için yer açılır.

Kod Örnekleri

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

Özellikler

Yöntemler

AddItem

()

Belirtilen bir Instance , belirtilen ömür içinde yıkım için planlar.lifetime argümanı sona erdiğinde, nesne aynı şekilde Instance:Destroy() ile yok edilir.lifetime argümanının isteğe bağlı olduğunu ve 10 saniye için varsayılan olduğunu unutmayın.

Debris 'nin 1,000 nesneye kadar sert kodlanmış bir maksimumu olduğunu unutmayın, bu nedenle 1,000'den fazla öğe eklendiğinde, en eski parçalar hemen yok edilir ve yeni parçalar için yer açılır.Bu, parametresini kesin bir ömür olarak değil, maksimum ömür olarak ele almanız gerektiğini gösterir, yani kesin bir ömür değil.

Parametreler

item: Instance

Ekleceğiniz Instance 'ye Debris .

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

Instance önce yok edilmesi gereken saniye sayısı.

Varsayılan değer: 10

Dönüşler

()

Kod Örnekleri

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

Etkinlikler