Debris
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
บริการ เศษเหล็ก ช่วยให้กำหนดการทำลายที่รับประกันโดยไม่ต้องยืนยัน
ข้อดี
นอกจากการสร้างความสับสนเล็กน้อย วัตถุที่ไม่มีความจำเป็นอีกต่อไปสามารถใช้หน่วยความจำระบบและทำให้ประสบการณ์ทำงานช้าลงในระยะเวลานาน ด้วยเหตุผลนี้จึงเสม
พิจารณาผนังถูกแบ่งออกเป็นอิฐแต่ละอัน หากคุณต้องการอิฐที่ยืนอยู่เป็นเวลา 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 รายการจะถูกทำลายโดยอินสแตนต์เพื่อประหยัดที่ว่างให้สำหรับวัตถุดิบใหม่
ตัวอย่างโค้ด
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
กำหนดการตั้งค่า Instance ให้สำหรับการทำลายภายในช่วงเวลาที่กำหนด หลังจากที่อาร์เจนต์ lifetime จะหมดอายุ วัตถุจะถูกทำลายในวิธีเดียวกับ
หมายเหตุว่า Debris มีสูงสุด 1,000 วัตถุดิบจึงหากมีวัตถุเพิ่มเติมมากกว่า 1,000 วัตถุจะถูกทำลายโดยอินสแตนซ์เพื่อสร้างพื้นที่ใหม่สำห
พารามิเตอร์
ส่งค่ากลับ
ตัวอย่างโค้ด
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