- Home /
Application.LoadLevel problem
If I use Application.LoadLevel to restart my current scene, it doesn't seem to "reset" everything. I only have one "DontDestroyOnLoad" object in the scene, and if I reload the level from within the level script, this gets duplicated, and the code complains about me trying to "access transforms which have been destroyed". The only way I can get round this is to load up an empty scene and then re-load the level I was in from there, but this is clumsy and takes longer than it should.
Any ideas on this? What am I doing wrong?
Answer by Jesse Anders · Dec 07, 2010 at 03:33 PM
Two quick comments:
If you're reloading the scene that has the object flagged as 'don't destroy on load' in it, then a new copy of that object will be created every time the scene is loaded. (In other words, the fact that you flagged the object as 'don't destroy on load' doesn't prevent that object from being created again when the scene is reloaded.) If you only want one copy of that object, you'll need to set things up differently (for example, include the object in a 'startup' scene that's only loaded once).
Regarding the 'accessing transforms that have been destroyed' problem, be aware that any references the 'don't destroy on load' object is holding to game objects or components in the scene will become invalid when the scene reloads.
Answer by edvinaszz · Jan 22, 2012 at 03:21 AM
hi i haveing problem then i use appkication.loadlevel in my script it's automatecky loads next lvl from my main meniu lvl my script looks like this were i added application.loadlevel
private void DisplayButton() { if(GUI.Button(new Rect(Screen.width/ 2 - 50,STAT_STARTING_POINT + (10 * LINE_HEIGHT),STAT_LABLE_WIDTH,LINE_HEIGHT),"Create")); { GameObject gs = GameObject.Find("_ _gamesettings"); GameSettings gsScript = gs.GetComponent(); gsScript.SaveCharacterData(); Application.LoadLevel(1); } }