Debris
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Parçalar hizmeti, teslim etmeden bir nesnenin garanti yok edilmesine izin verir.
Avantajlar
Biraz karışık bir objeyi oluşturmak dışında, artık gerekli olmayan nesneler sistem hafızasını kullanabilir ve bir deneyimin daha yavaş çalışmasına neden olabilir. Bu nedenle, artık gerekli olmayan bir nesneyi Instance:Destroy() çağırmak her zaman tavsiye edilir. Bazı durumlarda, bir nesnenin özell
Bir duvarın bireysel malzemelerine çekilmesini düşünün. Eğer 3 saniye içinde yok edilmeyi istiyorsanız, aşağıdaki kodu kullanabilirsiniz:
task.wait(3)brick:Destroy()
Ancak, beklemek, istemediğiniz bir şeyi sağlayabilir. Yielding'i önlemek için, bir çağrı işlevi 3 saniye sonra yeni bir çağrıda gösterilir:
task.delay(3, function()
brick:Destroy()
end)
Ya da bir satırda:
task.delay(3, brick.Destroy, brick)
Bu şimdi çıkarma önlenmesi, potansiyel bir dezavantajı vardır, çünkü çağrılama başarısız veya yoksa çağrılama başarısız olur.
Burada Debris 'in özellikli bir avantajı vardır, çünkü mevcut thread'i oluşturmaz veya kullanıcının konumunun dışına çalışır, böylece instans sonuçta yok edilir garanti edilir. Aşağıdaki kod üretmez ve garanti etmez instans:
Debris:AddItem(brick, 3)
Not et Debris 'in 1,000'den fazla öğeye kadar kodlanmış bir maksimumu vardır, bu yüzden 1,000'den fazla öğe eklenirse, en eski atıklar anında yok edilir ve yeni atıklar için yer açılır.
Kod Örnekleri
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
Belirli bir Instance için belirli bir süre için yok edilir. lifetime argümanının süresi dolduktan sonra, nesneler Instance:Destroy() ile aynı şekilde yok edilir. Not edin ki 2> Lifetime2> argümanının süresi isteğe bağlıdır ve var
Not that Debris has a hardcoded maximum of 1,000 objects, so if more than 1,000 items are added, the oldest debris will be destroyed instantly to make room for new debris. This means you should treat the lifetime parameter as a maximum lifetime, not an exact lifetime.
Parametreler
Class.Instance silinecek saniye sayısı.
Dönüşler
Kod Örnekleri
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