Debris

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable
Servicio

El servicio de escombros permite programar la destrucción garantizada de un objeto sin rendirse.

Beneficios

Además de crear un poco de desorden, los objetos que ya no son necesarios pueden agotar la memoria del sistema y causar que una experiencia se ejecute más lentamente con el tiempo.Por esta razón, siempre se recomienda llamar Instance:Destroy() a objetos que ya no necesitas.Sin embargo, en algunos casos, un objeto puede tener un período de utilidad específico antes de que pueda ser destruido.

Considera una pared que se rompe en ladrillos individuales.Si quieres que un bloque persista durante 3 segundos antes de ser destruido, puedes usar el siguiente código:


task.wait(3)
brick:Destroy()

Sin embargo, esperar hace que el hilo se rinda, lo que puede ser no deseado.Para evitar rendirse, una función de devolución de llamada se puede programar para ejecutarse en un nuevo hilo después de 3 segundos:


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

O en una línea:


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

Aunque esto ahora evita rendirse, tiene una desventaja potencial en que la llamada de devolución programada nunca se ejecutará si el script se desactiva o se destruye antes de que se ejecute la llamada de devolución.

Aquí es donde Debris tiene una ventaja específica, ya que no produce el hilo actual y se ejecuta fuera del contexto del script, garantizando que la instancia se destruirá eventualmente incluso si el script está desactivado o destruido.El siguiente código no produce y garantiza que la instancia se destruirá:


Debris:AddItem(brick, 3)

Tenga en cuenta que Debris tiene un máximo codificado de 1,000 objetos, por lo que si se agrega más de 1,000 artículos, los residuos más antiguos se destruirán instantáneamente para hacer espacio para nuevos debris.

Muestras de código

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

Propiedades

Métodos

AddItem

()

Programa un dado Instance.Después de que el argumento lifetime haya expirado, el objeto se destruye de la misma manera que Instance:Destroy() .Tenga en cuenta que el argumento lifetime es opcional y se predetermina a 10 segundos.

Tenga en cuenta que Debris tiene un máximo codificado de 1,000 objetos, por lo que si se agrega más de 1,000 artículos, los residuos más antiguos se destruirán instantáneamente para hacer espacio para nuevos debris.Esto significa que deberías tratar el parámetro lifetime como una vida máxima de **** , no una vida exacta.

Parámetros

item: Instance

El Instance para agregar a Debris .

Valor predeterminado: ""
lifetime: number

Número de segundos antes de que el Instance deba destruirse.

Valor predeterminado: 10

Devuelve

()

Muestras de código

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

Eventos