Debris

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง
บริการ

บริการ กำจัดเศษซาก ช่วยให้สามารถกำหนดการทำลายอย่างถาวรของวัตถุโดยไม่ยอมแพ้

ข้อดี

นอกจากการสร้างความสับสนเล็กน้อยแล้ววัตถุที่ไม่จำเป็นอีกต่อไปสามารถใช้หน่วยความจำของระบบและทําให้ประสบการณ์ทํางานช้าลงเมื่อเวลาผ่านไปด้วยเหตุผลนี้ จึงแนะนำเสมอให้โทร 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 รายการ ขยะที่เก่าแก่ที่สุดจะถูกทําลายทันทีเพื่อสร้างที่ว่างสําหรับขยะใหม่

ตัวอย่างโค้ด

Creates parts on a loop and parents them to the Workspace, then uses Debris.AddItem to clean them up.

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

()

กำหนดการ Instance สําหรับการทําลายภายในช่วงเวลาที่กําหนดหลังจากที่อาร์กิวเมนต์ lifetime หมดอายุแล้ว วัตถุจะถูกทําลายในลักษณะเดียวกับ Instance:Destroy()โปรดทราบว่าอาร์กิวเมนต์ lifetime เป็นตัวเลือกและเริ่มต้นที่ 10 วินาที

โปรดทราบว่า Debris มีขีดจํากัดสูงสุดที่บีบอัดไว้ล่วงหน้าสูงสุด 1,000 วัตถุดังนั้นหากเพิ่มไอเทมมากกว่า 1,000 รายการ ขยะที่เก่าแก่ที่สุดจะถูกทําลายทันทีเพื่อสร้างที่ว่างสําหรับขยะใหม่ซึ่งหมายความว่าคุณควรปฏิบัติต่อพารามิเตอร์ lifetime ในฐานะชีวิตสูงสุด **** ไม่ใช่ชีวิตที่แน่นอน

พารามิเตอร์

item: Instance

The Instance เพื่อเพิ่มใน Debris .

ค่าเริ่มต้น: ""
lifetime: number

จำนวนวินาทีก่อนที่ Instance จะถูกทําลาย

ค่าเริ่มต้น: 10

ส่งค่ากลับ

()

ตัวอย่างโค้ด

Creates parts on a loop and parents them to the Workspace, then uses Debris.AddItem to clean them up.

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

อีเวนต์