Debris

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Usługa

Usługa Debris umożliwia zaplanowanie gwarantowanej zniszczenia obiektu bez zachowania.

Zalety

Oprócz tworzenia trochę bałaganu, obiekty, które nie są już wymagane, mogą używać pamięci systemu i powodować, że doświadczenie będzie działać powoli w ciągu czasu. Z tego powodu zawsze należy wezwywać Instance:Destroy() na obiektach, które nie są już wymagane. W niektórych przypadkach jednak obiekt może mieć określny okres użyteczności

Rozważ, że ściana jest rozdzielana na pojedyncze klocki. Jeśli chcesz, aby klocki trzymały się przez 3 sekundy, zanim zostaną usunięte, możesz użyć następującego kodu:


task.wait(3)
brick:Destroy()

Jednak czekanie powoduje, że wątek zwraca, co może niechciano. Aby uniknąć czekania, można zaplanować funkcję zwrotu na nowym wątku po 3 sekundach:


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

Albo w jednej linii:


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

Podczas gdy to teraz unika, to ma potencjalny wadliwy efekt, że zaplanowany zwrotny call nie zostanie nigdy wykonany, jeśli skrypt zostanie wyłączony lub zniszczony przed wykonaniem zwrotnego call.

To jest miejsce, w którym Debris ma specjalne przewagę, ponieważ nie wygeneruje obecnego wątku i będzie działać poza kontekstem skryptu, gwarantując, że instancja zostanie w końcu usunięta, nawet jeśli skrypt zostanie wyłączony lub usunięty. Poniższy kod nie wygeneruje i nie zagwarantuje, że instancja zostanie usunięta:


Debris:AddItem(brick, 3)

Uwaga, że Debris ma maksymalnie 1000 obiektów, więc jeśli więcej niż 1000 przedmiotów zostanie dodanych, najstarsze przedmioty zostaną natychmiastowo usunięte, aby stworzyć miejsce na nowe przedmioty.

Przykłady kodu

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

Właściwości

Metody

AddItem

void

Planuje Instance dla zniszczenia w określonym czasie życia. Po upływie argumentu lifetime obiekt jest niszczony w ten sam sposób jak Instance:Destroy(). Uwaga, że argument 1> Lifetime1> jest opcjonalny i domyślnie wynosi 10 sekund.

Uwaga, że Debris ma maksymalnie 1000 obiektów, więc jeśli więcej niż 1000 przedmiotów zostanie dodanych, najstarszych przedmiotów zostanie natychmiastowo usuniętych, aby stworzyć miejsce na nowe przedmioty. Oznacza to, że powinieneś traktować parametr lifetime jako maksymalnego życia

Parametry

item: Instance

Class.Instance do dodania do Debris .

lifetime: number

Liczba sekund, zanim Instance powinien zostać zniszczony.

Wartość domyślna: 10

Zwroty

void

Przykłady kodu

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

Zdarzenia