Debris

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Création impossible
Service

Le service Debris permet de planifier la destruction garantie d'un objet sans renoncer.

Avantages

En plus de créer un peu de mal, les objets qui ne sont plus requis peuvent utiliser de la mémoire système et causer l'exécution d'une expérience plus lente au fil du temps. Pour cette raison, il est toujours conseillé d'appeler Instance:Destroy() sur les objets que vous n'avez plus besoin. Dans certains cas, cependant, un objet peut avoir une période d'utilité spécifique avant qu'il ne puisse être détruit.

Considérez qu'un mur est brisé en plusieurs briques individuelles. Si vous voulez qu'un brique reste pendant 3 secondes avant d'être détruit, vous pouvez utiliser le code suivant :


task.wait(3)
brick:Destroy()

Cependant, l'attente cause la production d'un fil qui peut être indésirable. Pour éviter la production d'un fil, une fonction d'appel peut être programmée pour s'exécuter sur un nouveau fil après 3 secondes :


task.delay(3, function()
brick:Destroy()
end)

Ou en une seule ligne :


task.delay(3, brick.Destroy, brick)

Bien que cela évite maintenant de se briser, il a un inconvénient potentiel dans le fait que le rappel prévu ne s'exécutera jamais si le script est désactivé ou détruit avant que le rappel s'exécute.

C'est là que Debris a un avantage spécifique, car il ne produit pas le fil actuel et s'exécute en dehors du contexte du script, ce qui garantit que l'instance est finalement détruite même si le script est désactivé ou détruit. Le code suivant ne produit pas et ne garantit pas que l'instance sera détruite :


Debris:AddItem(brick, 3)

Remarquez que Debris a un maximum codé 1,000 objets, donc si plus de 1,000 objets sont ajoutés, les débris les plus anciens seront instantanément détruits pour laisser la place à de nouveaux débris (service).

Échantillons de code

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

Propriétés

Méthodes

AddItem

void

Schedule un Instance donné pour la destruction dans la durée spécifiée. Après que l'argument lifetime a expiré, l'objet est détruit de la même manière que Instance:Destroy(). Notez que l'argument 1> Lifetime1> est facultatif et se définit par défaut à 10 secondes.

Notez que Debris a un maximum codé lifetime, donc si plus de 1,000 objets sont ajoutés, le plus vieux débris sera instantanément détruit pour faire de la place à de nouveaux débris (service). Cela signifie que vous devez traiter le Lifetime paramètre comme un 1> maximum1> vie, pas un temps de vie exact.

Paramètres

item: Instance

Le Instance pour ajouter à Debris.

lifetime: number

Nombre de secondes avant que la Instance ne devienne inutilisable.

Valeur par défaut : 10

Retours

void

Échantillons de code

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

Évènements