Debris

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Assistenza

Il servizio Debris consente la programmazione della distruzione garantita di un oggetto senza rendere consegne.

Vantaggi

Oltre a creare un po 'disastro, gli oggetti che non sono più richiesti possono usare la memoria di sistema e causare un'esperienza a essere eseguita più lentamente nel tempo. Per questo motivo, è sempre consigliato chiamare Instance:Destroy() sui oggetti che non hai più bisogno. In alcuni casi, tuttavia, un oggetto può avere un periodo di utilità specifico prima di poter essere distrutto.

Considera che un muro venga distrutto in singoli mattoni. Se vuoi che un mattone rimanga per 3 secondi prima di essere distrutto, puoi utilizzare il seguente codice:


task.wait(3)
brick:Destroy()

Tuttavia, l'attesa fa si che il thread produca il quale potrebbe essere non desiderato. Per evitare l'attesa, una funzione di callback può essere programmata per essere eseguita su un nuovo thread dopo 3 secondi:


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

O in una riga:


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

Mentre questo ora evita di arrendere, ha un potenziale svantaggio nel fatto che il richiamato programmato non verrà mai eseguito se lo script è disabilitato o distrutto prima dell'esecuzione del richiamato.

Questo è dove Debris ha un vantaggio specifico, poiché non produce il thread attuale e viene eseguito al di fuori del contesto dello script, garantendo che l'istanza sia alla fine distrutta anche se lo script è disabilitato o distrutto. Il seguente codice non produce e garantisce che l'istanza sia distrutta:


Debris:AddItem(brick, 3)

Nota che Debris ha un massimo hardcoded di 1.000 oggetti, quindi se più di 1.000 oggetti vengono aggiunti, il più vecchio rifiuto verrà distrutto istantaneamente per fare spazio a nuovi debris.

Campioni di codice

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

Proprietà

Metodi

AddItem

void

Programma un Instance per la distruzione all'interno della vita specificata. Dopo che l'argomento lifetime è scaduto, l'oggetto viene distrutto allo stesso modo come Instance:Destroy() . Nota che l'argomento 2> Lifetime2> è opzionale e predefinito a 10 secondi.

Nota che Debris ha un massimo hardcoded di 1.000 oggetti, quindi se più di 1.000 oggetti vengono aggiunti, il più vecchio rifiuto verrà distrutto istantaneamente per fare spazio a nuovi debris. Ciò significa che dovresti trattare il lifetime parametro come un massimoLifetime , non un tempo di vita esatto.

Parametri

item: Instance

Il Instance per aggiungere a Debris .

lifetime: number

Numero di secondi prima che il Instance debba essere distrutto.

Valore predefinito: 10

Restituzioni

void

Campioni di codice

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

Eventi