잔해 서비스는 생산성을 포기하지 않고 개체의 보장된 파괴 일정을 예약할 수 있습니다.
장점
혼란을 조금 일으키는 것 외에도, 더 이상 필요하지 않은 개체는 시스템 메모리를 사용하고 시간이 지남에 경험이 느려지게 할 수 있습니다.이러한 이유로 더 이상 필요하지 않은 개체에 대해 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.
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 인수가 만료된 후, 개체는 Instance:Destroy() 와 동일한 방식으로 삭제됩니다.lifetime 인수는 선택 사항이며 기본값은 10초입니다.
Debris 에는 하드코딩된 최대 1,000개의 개체가 있으므로 1,000개 이상의 항목이 추가되면 가장 오래된 폐기물이 즉시 파괴되어 새로운 폐기물을 위한 공간이 확보됩니다.즉, 매개 변수 를 정확한 수명이 아닌 최대 수명으로 처리해야 합니다.
매개 변수
반환
코드 샘플
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