Debris

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

無法建立
服務

廢棄物服務 允許預定的摧毀一個物體,而不會提供。

優點

雖然創建一些混亂,但不再需要的對象可以使用系統內存並導致體驗在時間長度上變慢。因此,建議您在不再需要的對象上呼叫 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

屬性

方法

AddItem

void

指定的 Instance 為指定的生命時間內的摧毀程序。在 lifetime 參數過期後,對象會以同樣的方式摧毀,如同 Class.Instance:Destroy() 2> . 注意, 5> Lifetime5> 參數是可選的,預設為 10 秒。

注意,Debris 有硬化的最大 1,000 個物件,因此如果超過 1,000 個項目,最古老的垃圾將立即摧毀,以讓新的廢棄物有空間。這意味著您應該將lifetime參數視為 最大 Lifetime,而不是正確的Lifetime,即不是1>

參數

item: Instance

Class.Instance 要加到 Debris

lifetime: number

Instance 被摧毀之前的秒數。

預設值:10

返回

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

活動