Debris

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

无法创建
服务

Debris 服务允许您安排一个对象的保证摧毁,而不会提供。

优势

除了创建一些混乱之外,不再需要的对象可以使用系统内存并导致体验在过时运行更慢。为此,总是建议在不再需要的对象上调用 Instance:Destroy() 。在某些情况下,但对象可能有特定期间的使用期限,在它被销毁之前。

考虑墙被打成个人的砖块。如果您想要一个砖块在被摧毁之前保持存在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 以在指定的生命时间内进行摧毁。在 Instance:Destroy() 参数过期后,对象会像 2>Class.Instance:Destroy2> 进行摧毁。注意, 5>Class.Instance:Destroy5> 参数是可选的,默认为 10 秒。

注意,Debris 有一个硬码的最大值为 1,000 个对象,如果超过 1,000 个项目,最旧的废料将被立即销毁,以腾出新的碎片。这意味着您应该将lifetime 参数视为 最大 的生命时间,而不是一个准确的生命时间。

参数

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

活动