Debris
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Der Trümmer -Dienst ermöglicht die zeitlich garantierte Zerstörung eines Objekts ohne Kapitulation.
Vorteile
Neben der Erstellung eines Durcheinanders können Objekte, die nicht mehr benötigt werden, Systemspeicher verbrauchen und die Erfahrung mit der Zeit langsamer laufen lassen.Aus diesem Grund wird immer empfohlen, Instance:Destroy() auf Objekte zu rufen, die Sie nicht mehr benötigen.In einigen Fällen kann jedoch ein Objekt eine bestimmte Nutzungszeit haben, bevor es zerstört werden kann.
Betrachte eine Wand, die in einzelne Backsteine zerschlagen wird.Wenn du möchtest, dass ein Ziegel 3 Sekunden lang verbleibt, bevor er zerstört wird, kannst du den folgenden Codesverwenden:
task.wait(3)brick:Destroy()
Warten verursacht jedoch, dass der Thread aufgegeben wird, was unerwünscht sein kann.Um Ausbrüche zu vermeiden, kann eine Rückruffunktion geplant werden, die auf einem neuen Thread nach 3 Sekunden ausgeführt wird:
task.delay(3, function()
brick:Destroy()
end)
Oder in einer Zeile:
task.delay(3, brick.Destroy, brick)
Während dies jetzt vermeidet, nachzugeben, hat es einen möglichen Nachteil, dass der geplante Rückruf nie ausgeführt wird, wenn das Skript vor dem Rückruf deaktiviert oder zerstört wird.
Hier hat Debris einen spezifischen Vorteil, da es den aktuellen Thread nicht liefert und außerhalb des Kontextes des Skript, das. PL: die Skriptsausgeführt wird, wodurch die Instanz schließlich zerstört wird, auch wenn das Skript deaktiviert oder zerstört wird.Der folgende Code gibt nicht nach und garantiert, dass die Instanz zerstört wird:
Debris:AddItem(brick, 3)
Beachten Sie, dass Debris ein hart codiertes Maximum von 1.000 Objekten hat, so dass, wenn mehr als 1.000 Artikel hinzugefügt werden, die ältesten Trümmer sofort zerstört werden, um Platz für neue Abfall (Service)zu schaffen.
Code-Beispiele
Creates parts on a loop and parents them to the Workspace, then uses Debris.AddItem to clean them up.
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
Zusammenfassung
Methoden
Plant einen bestimmten Instance für die Zerstörung innerhalb des angegebenen Lebenszeitraums.
Eigenschaften
Methoden
AddItem
Plant einen bestimmten Instance für die Zerstörung innerhalb des angegebenen Lebenszeitraums.Nachdem das lifetime Argument abgelaufen ist, wird das Objekt auf die gleiche Weise zerstört wie Instance:Destroy().Beachten Sie, dass das Argument lifetime optional ist und auf 10 Sekunden zurückfällt.
Beachten Sie, dass Debris ein hart codiertes Maximum von 1.000 Objekten hat, so dass, wenn mehr als 1.000 Artikel hinzugefügt werden, die ältesten Trümmer sofort zerstört werden, um Platz für neue Abfall (Service)zu schaffen.Das bedeutet, dass du den lifetime-Parameter als eine maximale Lebensdauer behandeln solltest, nicht als genaue Lebensdauer.
Parameter
Rückgaben
Code-Beispiele
Creates parts on a loop and parents them to the Workspace, then uses Debris.AddItem to clean them up.
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