Quantcast
Channel: Questions in topic: "dontdestroyonload"
Viewing all articles
Browse latest Browse all 416

Singleton DontDestroyOnLoad data persistance

$
0
0
Hi Im testing singleton pattern with one instance of GameControl to be persistent thru all scenes, but i ran into problem, code stripped to show only one GameObject connected to GameControl using UnityEngine; public class GameCtrl : MonoBehaviour { public static GameCtrl gameCtrl; public GameObject someObject; void Awake(){ if (gameCtrl == null) { DontDestroyOnLoad (gameObject); gameCtrl = this; } else if (gameCtrl != this) { Destroy(gameObject); } } void OnGUI(){ if (GUI.Button (new Rect (10, 100, 100, 30), "Hide Object")) someObject.SetActive (false); if (GUI.Button (new Rect (10, 140, 100, 30), "Restart")) RestartGame (); } public void RestartGame () { Application.LoadLevel (Application.loadedLevel); } } // and the question: running for first time GameCtrl has reference to someObject, but after restart, when you try to hide object, GameCtrl reference to someObject is missing "MissingReferenceException: The variable someObject of GameCtrl doesn't exist anymore. You probably need to reassign the someObject variable of the 'GameCtrl' script in the inspector. GameCtrl.OnGUI () (at Assets/GameCtrl.cs:19)" Ofcourse it is because when reloading Level someObject is destroyed and new one instantiate, and so if GameCtrl is not destroyed it loses reference. Ofcourse when deleting DontDestroyOnLoad() all works fine, but data in GameCtrl is not persistemt and have to serialize data to load it when new GameCtrl awakes So advice is my approach wrong? or is it ok but have to search for objects onload of Level and make references to them in GameCtrl?

Viewing all articles
Browse latest Browse all 416


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>