2013-03-16 1 views
2

J'ai un problème ...Unity3D - Problèmes après scène rechargeant via Application.LoadLevel

Il y a quatre scènes dans mon jeu: Une scène d'ouverture, une scène pour sélectionner les joueurs, la scène de jeu réel, et jeu sur scène.

Je courais des problèmes lorsque je charge ma scène de jeu réelle fois de plus

Application.LoadLevel("Let's play the game!") 

Voici comment je quitte cette scène:

if(GUI.Button (new Rect (x, y, w, h), "Quit", buttonStyle)) 
{ 
    Application.Quit(); 
    Application.LoadLevel("Opening Screen"); 
} 

Quand je charge mon niveau souhaité une seconde fois , la caméra est supposée suivre le premier joueur. Cela n'arrive pas. Je fournis une option pour "redémarrer", ce qui permettrait de résoudre ce problème, mais je ne veux pas que cet événement se produise en premier lieu.

Problèmes plus sérieux GameObjects qui ont été dynamiquement chargés. Je reçois "GameObject" a été détruit mais vous essayez toujours d'y accéder. " Je ne suis pas sûr d'où cela vient, car je ne vois pas où j'avais précédemment appelé "Détruire" n'importe où. De plus, les objets créés dynamiquement apparaissent dans la hiérarchie lorsque j'utilise l'application dans Unity.

Je pense que la racine de mon problème réside dans l'appareil photo défaillant, mais je ne suis pas sûr de savoir comment aborder la réparation.

Quelqu'un a-t-il des recommandations?

Répondre

3

On dirait que vous devez vous assurer d'appeler DontDestroyOnLoad pour garder votre objet en mémoire entre les charges de niveau:

DontDestroyOnLoad(gameObjectToPreserve); 

En outre, le code suivant de votre exemple quitter votre application avant de pouvoir charger votre " écran d'ouverture ":

if(GUI.Button (new Rect (x, y, w, h), "Quit", buttonStyle)) 
{ 
    Application.Quit(); 
    Application.LoadLevel("Opening Screen"); 
} 

Supprimez la ligne « Application.Quit() » si vous avez l'intention de revenir à l'écran d'ouverture. Vous ne verrez pas ce problème dans le mode de prévisualisation de l'éditeur car Application.Quit() ne fait rien ici.

+0

Oui, supprimez Application.Quit(); Cela fermera votre jeu en dehors de l'éditeur Unity. –

+0

Vous êtes rapide! Merci pour l'avertissement concernant Application.Quit(). J'ai commencé à commenter un tas de code source et j'ai isolé mon problème. Mon appareil photo GameObject est lié à un script qui échoue lorsque le niveau souhaité est rechargé. Apparemment, cette erreur a causé un effet de train-épave dans tout le niveau. –

+0

J'ai tout réparé. J'ai pu trouver plusieurs zones où la validation sur les objets manquait. Cela a éliminé le "GameObject" a été détruit mais vous essayez toujours d'y accéder ". En ce qui concerne la caméra, j'ai une question: Les appels à l'interface graphique. * Restreints à seulement dans OnGUI()? Je fais des appels à l'intérieur de OnGUI() qui fait référence à GUI.Button, GUI.Labels, etc. Quand tous ces appels GUI. * Ont été faits dans OnGUI(), la caméra a anormalement disparu. –

Questions connexes