Debris

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Serviço

O serviço Lixo permite agendar a destruição garantida de um objeto sem ceder.

Benefícios

Além de criar um pouco de bagunça, objetos que não são mais necessários podem usar memória do sistema e causar uma experiência a ser mais lenta ao longo do tempo.Por essa razão, é sempre aconselhável chamar Instance:Destroy() em objetos que você não precisa mais.Em alguns casos, no entanto, um objeto pode ter um período específico de utilidade antes de poder ser destruído.

Considere uma parede sendo quebrada em tijolos individuais.Se você quiser que um tijolo persista por 3 segundos antes de ser destruído, você pode usar o seguinte código:


task.wait(3)
brick:Destroy()

No entanto, esperar causa o rendimento do subprocesso, o que pode ser indesejável.Para evitar ceder, uma função de retorno de chamada pode ser agendada para ser executada em um novo subprocesso após 3 segundos:


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

Ou em uma linha:


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

Embora isso agora evite ceder, tem um inconveniente potencial em que o chamado agendado nunca será executado se o script for desativado ou destruído antes que o chamado seja executado.

É aqui que Debris tem uma vantagem específica, pois não fornece o subprocesso atual e é executado fora do contexto do script, garantindo que a instância seja eventualmente destruída mesmo se o script for desativado ou destruído.O seguinte código não produz e garante que a instância será destruída:


Debris:AddItem(brick, 3)

Observe que Debris tem um limite máximo codificado de 1,000 objetos, então, se forem adicionados mais de 1,000 itens, os resíduos mais antigos serão destruídos instantaneamente para fazer espaço para novos Detritos (Serviço).

Amostras 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

Propriedades

Métodos

AddItem

()

Agende um determinado Instance.Após o argumento lifetime expirar, o objeto é destruído da mesma maneira que Instance:Destroy() .Observe que o argumento lifetime é opcional e padrão para 10 segundos.

Observe que Debris tem um limite máximo codificado de 1,000 objetos, então, se forem adicionados mais de 1,000 itens, os resíduos mais antigos serão destruídos instantaneamente para fazer espaço para novos Detritos (Serviço).Isso significa que você deve tratar o parâmetro lifetime como uma vida máxima de tempo , não uma vida exata.

Parâmetros

item: Instance

O Instance para adicionar ao Debris.

Valor Padrão: ""
lifetime: number

Número de segundos antes que o Instance seja destruído.

Valor Padrão: 10

Devolução

()

Amostras 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