Voilà, j'ai un Script LevelManager avec une variable static Instance pour pouvoir faire appel à ce script n'importe où dans le jeu. Jusque là tout marche très bien. Ce script est sur un GameObject, que j'ai mis en DontDestroyOnLoad.
Le problème arrive quand je reload la scene et une erreur survient : "MissingReferenceException: The object of type 'LevelManager' has been destroyed but you are still trying to access it."
Cependant, dans l'inspector le LevelManager est bien présent.
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class LevelManager : MonoBehaviour {
public static LevelManager Instance;
public int level = 1;
public Level levelLoad = null;
private void Awake()
{
Instance = this;
Init();
}
void Init()
{
level = PlayerPrefs.GetInt("Level", 1);
Debug.Log("Start Level Manager");
string _script_Name = "Level" + level.ToString();
// On ajoute un component
levelLoad = (Level)gameObject.AddComponent(Type.GetType(_script_Name)); // L'erreur arrive sur cette ligne
}
L'erreur arrive quand je souhaite rajouter un Component au GameObject. Et malgré cette erreur, bah dans l'inspector je vois que le Component en question à bien été rajouté. Mais tout appel à levelLoad (le component rajouté) renverra null :
Code : Tout sélectionner
public int Get_NbPaternNecessary()
{
if (levelLoad)
return levelLoad.nb_Obstacle;
else
{
Debug.Log("Level Manager ERROR : levelLoad not found");
return -1;
}
}
(Je reprécise que tout marche parfaitement AVANT d'avoir reload la scène)
J'ai essayé de ne mettre que le code nécessaire, si j'ai oublié quelque chose n'hésitez pas.
Je vous remercie d'avance