Debris
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
デブリス サービスは、妥協せずにオブジェクトの保証破壊をスケジュールすることを許可します。
利点
混乱を少し生み出すことのほか、もう必要ないオブジェクトはシステムメモリを使用し、経過時に体験が遅くなる可能性があります。このため、もう必要としていないオブジェクトには常に Instance:Destroy() を呼ぶことをお勧めします。しかし、いくつかの場合、オブジェクトは破棄できる前に特定の期間の有用性がある可能性があります。
壁が個々のブロックに壊されていると考えてください。壊される前に 3 秒間ブリックが残ることを望む場合は、次のコードを使用できます:
task.wait(3)brick:Destroy()
しかし、待機するとスレッドが割り当てられ、不要なものが生じる可能性があります。あきらめないために、コールバック関数は 3秒後に新しいスレッドで実行するようにスケジュールできます:
task.delay(3, function()
brick:Destroy()
end)
または 1行で:
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