Debris
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Der Debris-Dienst ermöglicht die Planung einer garantierten Zerstörung eines Objekts ohne Ausgabe.
Vorteile
Neben der Erstellung eines Chaos-Objekts kann die Verwendung von Objekten, die nicht mehr benötigt werden, Systemspeicher verwenden und die Erfahrung dazu bringen, dass die Erfahrung langsamer über Zeit ausgeführt wird. Aus diesem Grund wird dringend empfohlen, Instance:Destroy() auf Objekte zu rufen, die Sie nicht mehr benötigen. In einigen Fällen kann jedoch ein Objekt eine bestimmte Zeit lang eine spezifische Zeit vor der Zerstörung haben.
Betrachten Sie eine Wand, die in einzelne Ziegelsteine zerbrochen wird. Wenn Sie einen Ziegelstein für 3 Sekunden nach der Zerstörung warten möchten, können Sie den folgenden Codesverwenden:
task.wait(3)brick:Destroy()
Warte jedoch, verursacht die Erzeugung, was unerwünscht sein kann. Um das Erzeugen zu vermeiden, kann eine Rückruf-Funktion geplant werden, die nach 3 Sekunden auf einem neuen Thread ausgeführt wird:
task.delay(3, function()
brick:Destroy()
end)
Oder in einer Zeile:
task.delay(3, brick.Destroy, brick)
Während dies jetzt das Ausgeben vermeidet, hat es einen potenziellen Nachteil, dass der geplante Rückruf niemals ausgeführt wird, wenn der Skript deaktiviert oder zerstört wird, bevor der Rückruf ausgeführt wird.
Dies ist der Bereich, in dem Debris einen bestimmten Vorteil hat, da es die aktuelle Thread nicht erzeugt und außerhalb des Kontexts des Skript, das. PL: die Skriptsausgeführt wird, wodurch sichergestellt ist, dass die Instanz letztendlich zerstört wird, wenn das Skript deaktiviert oder zerstört wird. Der folgende Code erzeugt und gewährt nicht den Vorteil, dass die Instanz letztendlich zerstört wird:
Debris:AddItem(brick, 3)
Beachten Sie, dass Debris ein hardcodiertes Maximum von 1.000 Objekten hat, so dass wenn mehr als 1.000 Objekte hinzugefügt werden, das älteste Trümmer sofort zerstört wird, um Platz für neue Abfall (Service)zu schaffen.
Code-Beispiele
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
Schedules a given Instance for destruction within the specified lifetime.
Eigenschaften
Methoden
AddItem
Schedules a given Instance for destruction within the specified lifetime. After the lifetime argument has elapsed, the object is destroyed in the same manner as Instance:Destroy() . Note that the 1> lifetime1> argument is optional and defaults to 10 seconds.
Beachten Sie, dass Debris ein hardcoded-Maximum von 1.000 Objekten hat, so dass wenn mehr als 1.000 Elemente hinzugefügt werden, das älteste Trümmer sofort zerstört wird, um Platz für neue Abfall (Service)zu schaffen. Dies bedeutet, dass Sie den lifetime-Parameter als Maximum -Lebenszeit behandeln sollten, nicht als gena
Parameter
Rückgaben
Code-Beispiele
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