Los datos temporales pueden necesitar sobrevivir al cambio de escena.
DontDestroyOnLoad(gameObject);
Un manager puede mantener datos mientras el juego sigue abierto.
public class GameData : MonoBehaviour
{
public int monedas;
void Awake()
{
DontDestroyOnLoad(gameObject);
}
}
Si el manager existe en varias escenas, pueden aparecer copias.
Una solución común:
public static GameData Instance;
void Awake()
{
if (Instance != null &&
Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
DontDestroyOnLoad(gameObject);
}
DontDestroyOnLoad no guarda nada en disco.
Si cerrás el juego, esos datos desaparecen.
Para persistencia real necesitás:
archivo
JSON
PlayerPrefs
DontDestroyOnLoad
= entre escenas
archivo
= entre sesiones