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)
Class.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 内で破壊します。 Class.Instance:Destroy() の引数の有効期限が切れると、オブジェクトは同じ方法で破壊されます。 2>Class.Instance:Destroy() の引数はオプションであり、デフォルトでは 10 秒です。
Class.Debris には、ハードコードされた最大 1,000個のオブジェクトがあるため、1,000個以上のアイテムが追加されると、最古の破片は即座に破壊され、新しい破片が入れ替わります。これは、lifetime パラメータを正確な Lifetime ではなく、「最大 L
パラメータ
戻り値
コードサンプル
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