[RESOLU][DB-AL] Problème sur les instances d’objet

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
SidCamelot
Messages : 27
Inscription : 16 Oct 2018 23:14

[RESOLU][DB-AL] Problème sur les instances d’objet

Message par SidCamelot » 29 Oct 2018 19:13

Bonjour tout le monde.

Je ne comprends pas pourquoi que je crée et que je détruit une instance d’un Prefab avec Void Update(). Ça fonctionne sans problème. A savoir l’objet est instancié et détruit autant de fois que nécéssaire.

Par contre quand je passe le même script par void OnMouseDown() ça ne fonctionne qu’une seule fois au premier clic, au second clic le programme affiche une erreur “The object of type GameObject has been destroyed but you are still trying to accès it.”

Je comprend bien que l’objet est détruit (y compris dans l’inspector) pourtant, le GameObject est un préfab. Quelqu'un peut il m'expliquer ? Merci.
Dernière édition par SidCamelot le 29 Oct 2018 22:18, édité 2 fois.

Avatar de l’utilisateur
Liven
Messages : 268
Inscription : 30 Nov 2017 01:48

Re: [DB-AL] Problème sur les instances d’objet

Message par Liven » 29 Oct 2018 20:31

Faut que tu nous montre du code (celui qui marche et celui qui marche pas)

SidCamelot
Messages : 27
Inscription : 16 Oct 2018 23:14

Re: [DB-AL] Problème sur les instances d’objet

Message par SidCamelot » 29 Oct 2018 20:50

En fait c'est le même script. quand je le met comme ça :

Code : Tout sélectionner

void Update()
    {
        varObjBullet = Instantiate(varObjBullet, transform.position, transform.rotation);
        Destroy(varObjBullet, 0.1f);
    }
ca marche sans problème. Mais si je veux faire la même chose mais déclenché par un clic de souris :

Code : Tout sélectionner

void OnMouseDown()
    {
        varObjBullet = Instantiate(varObjBullet, transform.position, transform.rotation);
        Destroy(varObjBullet, 0.1f);
    }
ça marche au premier clic (mon GameObject est instancié et détruit dans la foulée) mais aux deuxième clic j'ai le message d'erreur.

Avatar de l’utilisateur
Liven
Messages : 268
Inscription : 30 Nov 2017 01:48

Re: [DB-AL] Problème sur les instances d’objet

Message par Liven » 29 Oct 2018 21:16

Il ne faut pas que tu nome l'objet que tu instanciate comme l'objet "modèle". Dans ton exemple ça donne :

Code : Tout sélectionner

        varObjBulletInstance = Instantiate(varObjBullet, transform.position, transform.rotation);
        Destroy(varObjBulletInstance, 0.1f);
Quand il y a conflit comme ça (même nom pour le modèle et la copie), des fois ça marche ou pas, pour être sûr que ça marche il faut être rigoureux et bien différencier ce qui doit l'être.

Et puis du coup il faut déclarer le varObjBulletInstance évidement (soit avec les autres variable en début de script soit en ajoutant GameObject devant la première ligne)

SidCamelot
Messages : 27
Inscription : 16 Oct 2018 23:14

Re: [DB-AL] Problème sur les instances d’objet

Message par SidCamelot » 29 Oct 2018 22:16

C'est parfait ! :super:

Un grand merci :amen:

Répondre

Revenir vers « (C#) CSharp »