[DB-AL] Comment détruire un GameObject avec Don'tDsetroyOnLoad

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
MGameur
Messages : 28
Inscription : 22 Mars 2020 21:23

[DB-AL] Comment détruire un GameObject avec Don'tDsetroyOnLoad

Message par MGameur » 27 Mars 2020 16:38

Bonjour,
Je veut mettre de la musique en continue sur des scène d’affilé (le menu) pour cela j'utilise le script DontDestroyOnLoad.
Script:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DontDestroyLoad : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        DontDestroyOnLoad(gameObject);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

Je veut le détruire si je vait dans une certaine scène (le jeu) pour cela j'utilise le script DsetroyMusique.
Script:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DestroyMusique : MonoBehaviour
{
    public GameObject Musique;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        Destroy(Musique);
    }
}
Unity me met qu'il n'y a pas d'erreur. Il faut que je mette le GameObject (qui commence plusieurs scène en arrière) pour cela je crée une entité (voir pièce jointe). le problème c'est que si je clic sur le bouton qui doit détruire la musique (voir pièce jointe), mais il ne le détruit pas.
Comment je peut faire.
Merci d'avance pour votre aide.
Pièces jointes
Capture.PNG
entité musique qui est dans les fichier
Capture.PNG (4.76 Kio) Consulté 2247 fois
Capture...PNG
bouton qui doit détruire la musique (qui est dans la dernière scène du menu)
Capture...PNG (69.07 Kio) Consulté 2247 fois

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB-AL] Comment détruire un GameObject avec Don'tDsetroyOnLoad

Message par boubouk50 » 27 Mars 2020 17:47

Ce n'est pas possible.

Ici, tu as la destruction dans un Update (), c'est à dire qu'Unity va détruire l'objet référencé Musique à la première frame, puis va tenter de détruire un objet déjà détruit et fera une erreur.
Si le gameObject Musique n'a pas été référencé alors tu auras aussi la même erreur dès la première frame.
Tu ne peux pas mettre non plus une fonction Update () dans un bouton.
Ensuite, tu références un prefab qui n'est pas dans la scène donc tu ne peux pas le détruire.
Et enfin, ton bouton appelle la fonction pour changer de niveau pas pour détruire.

Je ne vois donc pas comment cela pourrait marcher tel que tu le décris.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

MGameur
Messages : 28
Inscription : 22 Mars 2020 21:23

Re: [DB-AL] Comment détruire un GameObject avec Don'tDsetroyOnLoad

Message par MGameur » 27 Mars 2020 17:55

ok mais il n'y a pas une solution pour que le son se coupe, pour plus que l'on entend la musiqiue boubouk50

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: [DB-AL] Comment détruire un GameObject avec Don'tDsetroyOnLoad

Message par djulio74 » 27 Mars 2020 18:42

ta musique doit etre avec un audiosource sur un gameobject.
- tu peux couper le son de ton audiosource, mais il continuera de tourner
- destroy le gameObject qui contiens l'audioSource, mais a ne faire qu'une fois, pas dans une fonction Update()

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

MGameur
Messages : 28
Inscription : 22 Mars 2020 21:23

Re: [DB-AL] Comment détruire un GameObject avec Don'tDsetroyOnLoad

Message par MGameur » 27 Mars 2020 19:08

djulio74 tout les tuto montrant comment faire pour mute le son sont obsolète, peut tu me donné le script car je n'y arrive pas.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: [DB-AL] Comment détruire un GameObject avec Don'tDsetroyOnLoad

Message par djulio74 » 27 Mars 2020 19:21

pourtant c'est tout simple de mettre sur mute un audiosource :
voir la doc unity qui donne cet exemple basique :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    AudioSource audioSource;

    void Start()
    {
        audioSource = GetComponent<AudioSource>();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
            audioSource.mute = !audioSource.mute;
    }
}

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Répondre

Revenir vers « (C#) CSharp »