Unity Scene Is Loading/Not Loaded on player death
Ran into an issue where each time my player is killed, my script that reloads the scene is flashing, "Level1 is Loading/not Loaded" in my Hierarchy
//Singleton instantation
private static NewPlayer instance;
public static NewPlayer Instance
{
get
{
if (instance == null) instance = GameObject.FindObjectOfType<NewPlayer>();
return instance;
}
}
private void Awake()
{
if (GameObject.Find("New Player"))
{
Destroy(gameObject);
}
}
// Start is called before the first frame update
void Start()
{
DontDestroyOnLoad(gameObject);
gameObject.name = "New Player";
UpdateUI();
SetSpawnPosition();
}
In the Update function I have:
if (health <= 0)
{
Die();
}
Which calls
public void Die()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
Above I have the script check to see in the Awake() if there is already in instance of "New Player" in the scene (ex: player clears first level and enters the next level) - and if so, to destroy that asset. After it is destroyed, a New "New Player" is created and spawns at an empty game object labeled as "SpawnPosition".
What's supposed to happen: Player enters level, HP hits 0, reset back to SpawnPosition.
What is happening is the scene, "Level1" will flash a message in the hierarchy: "Level1 (no loaded)" "Level1 (is loading)"
I've checked with debug that the player is dying correctly, it just won't delete the player and spawn them back at the start of the scene.
Any and all help would be appreciated.
Answer by unity_D71093A2166EEF491327 · Sep 13, 2021 at 03:20 AM
figured a way to hack around the issue with some less then stellar code - but it works