Vous appelez cette fonction chaque fois que vous souhaitez "détruire" une instance, en déclenchant normalement un événement Destroy et aussi un événement de nettoyage. Cela l'enlèvera de la pièce jusqu'à ce que la pièce soit redémarrée (sauf si la pièce est persistante). Appeler la fonction sans arguments détruira simplement l'instance qui est actuellement dans la portée et exécute le code, mais vous pouvez fournir un argument facultatif "id" et cibler une instance spécifique en utilisant la valeur d'ID d'instance, ou vous pouvez cibler toutes les instances de un objet particulier en utilisant un object_index. Par exemple:
instance_destroy(other); // destroy the other instance in a Collision Event
instance_destroy(obj_Bullet); // destroy ALL instances of the object "obj_Bullet"Le second indicateur facultatif vous permet de "désactiver" l'événement Destroy pour l'instance en cours de destruction. Par défaut, l'événement Destroy sera toujours exécuté, mais si vous définissez ce drapeau sur false alors vous pouvez faire en sorte que l'instance se détruise et ignore cet événement.
IMPORTANT! Cela évitera l'événement Destroy, mais l'événement Clean Up sera toujours appelé.
Il est à noter que lorsque vous détruisez une instance, son événement destroy est appelé immédiatement après le code ou l'action qui appelle le détruire. Deuxièmement, bien que l'événement destroy soit exécuté, l'instance n'est pas immédiatement retirée du jeu et continuera à exécuter le code contenu dans l'événement en cours. Ce n'est que lorsque l'événement actuel est terminé qu'il sera retiré de la partie.Donc, si vous avez, par exemple, ce code:
if hp <= 0 instance_destroy();
score += 10;La variable "score" sera incrémentée même si le instance_destroy La fonction a été appelée et l'instance sera finalement retirée de votre partie à la fin de l'événement. Faites attention à cela, comme si vous aviez (par exemple) créé une ressource dynamique pour l'instance, comme une structure de données, puis détruit cette ressource dans l'événement destroy, s'il y a des références après la fonction ou l'action destroy a été effectuée alors vous obtiendrez une erreur "ressource inconnue", car l'événement destroy l'a retiré de la partie.
instance_destroy([id, execute_event_flag]);
Argument La description id L'ID d'instance ou object_index à détruire (facultatif, l'instance par défaut est l'instance par défaut) execute_event_flag Mis à true ou false pour effectuer l'événement destroy ou non (facultatif, par défaut est true )
N/A
if bbox_right < 0 || bbox_left > room_width
|| bbox_bottom < 0 || bbox_top > room_height
{
instance_destroy(id, false);
}
Le code ci-dessus détruira l'instance exécutant le code sans appeler l'événement Destroy si l'instance est en dehors des limites de la salle.