Debris
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
El servicio Debris permite programar la destrucción garantizada de un objeto sin rendir.
Beneficios
Además de crear un poco de un desastre, los objetos que ya no se requieren pueden usar memoria del sistema y causar que una experiencia se ejecute más lentamente con el tiempo. Por esta razón, siempre se recomienda llamar a Instance:Destroy() en los objetos que ya no necesita. En algunos casos, sin embargo, un objeto puede tener un período de utilidad específico antes de que se pueda destruir.
Considera que una pared se rompe en bloques individuales. Si quieres que una ladrillo se mantenga durante 3 segundos antes de ser destruida, puedes usar el siguiente código:
task.wait(3)brick:Destroy()
Sin embargo, la espera hace que el hilo genere lo que puede ser no deseado. Para evitar la generación, se puede programar una función de llamada para que se ejecute 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 un potencial desventaja en que el código programado nunca se ejecutará si el script está deshabilitado o destruido antes de que se ejecute el código.
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 destruya finalmente, incluso si el script está deshabilitado o destruido. El código siguiente no produce y garantiza que la instancia se destruya:
Debris:AddItem(brick, 3)
Tenga en cuenta que Debris tiene un máximo de objetos codificado de 1,000, por lo que si se agregan más de 1,000 artículos, el material más antiguo se destruirá instantáneamente para hacer espacio para nuevo debris.
Amostras de código
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
Resumo
Métodos
Programa un Instance para la destrucción dentro de la vida especificada.
Propriedades
Métodos
AddItem
Programa un Instance para la destrucción dentro de la vida especificada. Después de que el argumento lifetime haya expirado, el objeto se destruye de la misma manera que Instance:Destroy() . Nota que el argumento 1> Lifetime1> es opcional y se predetermina para 10 segundos.
Tenga en cuenta que Debris tiene un máximo de objetos codificado de 1,000, por lo que si se agrega más de 1,000 artículos, el material más antiguo se destruirá instantáneamente para hacer espacio para nuevo debris. Esto significa que debe tratar el parámetro de lifetime como un máximo de tiempo de vida , no un tiempo de vida exacto.
Parâmetros
Devolução
Amostras de código
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