Debris
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Dịch vụ Dọn dẹp cho phép lên lịch tiêu diệt đảm bảo của một đối tượng mà không phải từ bỏ.
Lợi thế
Ngoài việc tạo ra một chút hỗn loạn, các đối tượng không còn được yêu cầu có thể sử dụng bộ nhớ hệ thống và gây ra trải nghiệm chạy chậm hơn theo thời gian.Vì lý do này, luôn được khuyến nghị gọi Instance:Destroy() trên các đối tượng bạn không còn cần nữa.Tuy nhiên, trong một số trường hợp, một đối tượng có thể có một khoảng thời gian có ích cụ thể trước khi nó có thể bị phá hủy.
Hãy xem xét một bức tường bị đập vào các khối riêng lẻ.Nếu bạn muốn một chiếc gạch lưu lại trong 3 giây trước khi bị phá hủy, bạn có thể sử dụng mã sau đây:
task.wait(3)brick:Destroy()
Tuy nhiên, việc chờ đợi gây ra sự chờ đợi của luồng mà có thể không mong muốn.Để tránh từ bỏ, chức năng gọi lại có thể được lên lịch chạy trên một tiền thưởng mới sau 3 giây:
task.delay(3, function()
brick:Destroy()
end)
Hoặc trong một dòng:
task.delay(3, brick.Destroy, brick)
Trong khi điều này bây giờ tránh việc đầu hàng, nó có một hạn chế tiềm năng trong việc lịch trình gọi lại sẽ không bao giờ chạy nếu kịch bản bị vô hiệu hóa hoặc bị phá hủy trước khi cuộc gọi được thực hiện.
Đây là nơi Debris có lợi thế cụ thể, bởi vì nó không cung cấp luồng hiện tại và chạy bên ngoài bối cảnh của kịch bản, đảm bảo rằng instance cuối cùng bị phá hủy ngay cả khi kịch bản bị vô hiệu hóa hoặc bị phá hủy.Mã sau đây không trả và đảm bảo rằng instancia sẽ bị phá hủy:
Debris:AddItem(brick, 3)
Lưu ý rằng Debris có tối đa được mã hóa là 1,000 đối tượng, vì vậy nếu thêm hơn 1,000 vật phẩm, vật phẩm cũ nhất sẽ bị phá hủy ngay lập tức để tạo ra không gian cho vật phẩm mới.
Mẫu mã
Creates parts on a loop and parents them to the Workspace, then uses Debris.AddItem to clean them up.
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
Tóm Tắt
Phương Pháp
Lên lịch cho một đã cho Instance được phá hủy trong thời gian đời được chỉ định.
Thuộc Tính
Phương Pháp
AddItem
Lên lịch cho một đã cho Instance được phá hủy trong thời gian đời được chỉ định.Sau khi tham số lifetime đã hết hạn, đối tượng bị phá hủy theo cùng một cách như Instance:Destroy() .Lưu ý rằng argument lifetime là tùy chọn và mặc định là 10 giây.
Lưu ý rằng Debris có tối đa được mã hóa là 1,000 đối tượng, vì vậy nếu thêm hơn 1,000 vật phẩm, vật phẩm cũ nhất sẽ bị phá hủy ngay lập tức để tạo ra không gian cho vật phẩm mới.Điều này có nghĩa là bạn nên xử lý tham số lifetime như một tối đa thời gian sống, không phải là một thời gian chính xác.
Tham Số
Lợi Nhuận
Mẫu mã
Creates parts on a loop and parents them to the Workspace, then uses Debris.AddItem to clean them up.
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