// Awake est appele avant Start private void Awake(){ if(instance!=null){ Destroy(gameObject,0); }else{ _instance=this; DontDestroyOnLoad(gameObject); //evite la destruction de l'instance au changement de scene } //if+else } //Awake
} //Soigner /// <summary> /// Fait le grand menage et supprime l'instance Singleton du jeu. /// Doit etre executee apres la mort definitive (avant d'aller au menu ou au generique) /// Supprime les elements DontDestroyOnLoad (persos, ui, musique, etc.) /// </summary> public void SupprimerJeu() { Debug.Log("<color=green>METHODE SupprimerJeu</color>"); //detruire les persos foreach (Perso perso in Jeu.lesPersos) //chaque personnage de la liste { Destroy(perso.gameObject); //les gameobjects des personnages } //foreach Destroy(this.gameObject); //jeu _instance = null; //il y a d'autres elements a supprimer avec cette technique... Destroy(_musique.gameObject); //l'instance qui gere la musique Destroy(_canvasUI.gameObject); //l'instance du canevas (par extension infos et dialogue) //remise a neuf des variables statiques dans Jeu: _lesPersos = new List <Perso> { }; _perso = null; tableau = null; combat = null; nomJoueur = "Spero"; facteurTemps = 1; listeObjets = new List <string>(); _fortune = 0; _memNomScene = null; typeCombat = TypeCombat.AUCUN; //remise a neuf des variables statiques dans d'autres classes: Interacteur.InitialiserListeAbsences(); //cette liste statique est partagee par Objet et PNJ Perso.peutBouger = true; Debogage.InitialisationFinDePartie(); //supprime l'instance qui gere le debogage et toutes valeurs statiques Dialogue.InitialisationFinDePartie(); PNJ.dictRencontres = new Dictionary <string, uint>(); } //SupprimerJeu
} //MarcherVite /// <summary> /// Supprime toute valeur statique (avant une nouvelle partie) /// </summary> static public void InitialisationFinDePartie(){ Destroy(_instance); _instance = null; } //InitialisationFinDePartie