廢棄物服務 允許預定的摧毀一個物體,而不會提供。
優點
雖然創建一些混亂,但不再需要的對象可以使用系統內存並導致體驗在時間長度上變慢。因此,建議您在不再需要的對象上呼叫 Instance:Destroy() 。在某些情況下, however,對象可能會有特定的使用期之前才能被摧毀。
考慮牆被撞成個別的磚塊。如果您想要磚塊會在被摧毀前保持 3 秒,您可以使用以下代碼:
task.wait(3)brick:Destroy()
然而,等待會導致線程產生,這可能是不想要的。若要避免產生,則可以在 3 秒後預定一個回撤函數在新的線程上執行:
task.delay(3, function()
brick:Destroy()
end)
或者在一條線上:
task.delay(3, brick.Destroy, brick)
雖然這現在會避免輸出,但它有一個潛在的弊端,即訪問程式碼之前,如果指定的回調沒有執行,則會無法執行。
這是 Debris 的特定優勢,因為它不會產生目前的線程並且在指定的指令碼式碼外執行,因此保證它的實例在最終程式碼被禁用或摧毀時仍然被摧毀。以下代碼不會產生和保證實例會被摧毀:
Debris:AddItem(brick, 3)
注意,Debris 的硬化最大值為 1,000 個,因此如果超過 1,000 個項目添加,最舊的垃圾將立即摧毀,以讓新廢棄物有空間。
範例程式碼
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
概要
方法
排程指定的 Instance 以在指定的生命時間內摧毀。
屬性
方法
AddItem
void
指定的 Instance 為指定的生命時間內的摧毀程序。在 lifetime 參數過期後,對象會以同樣的方式摧毀,如同 Class.Instance:Destroy() 2> . 注意, 5> Lifetime5> 參數是可選的,預設為 10 秒。
注意,Debris 有硬化的最大 1,000 個物件,因此如果超過 1,000 個項目,最古老的垃圾將立即摧毀,以讓新的廢棄物有空間。這意味著您應該將lifetime參數視為 最大 Lifetime,而不是正確的Lifetime,即不是1>
參數
返回
void
範例程式碼
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