2017-07-17 3 views
0

Je suis nouveau à l'unité et mes capabitlities de programmation est encore un peu faible, je travaille sur un jeu 2d Platformer comme un moyen d'apprendre à coder quant à lui de pratiquer ma passion qui est le développement de jeuxUnity3D - Comment créer un support de scène pour tous les niveaux et en débloquer?

mon principal droit d'émission est maintenant que j'ai deux scènes (Level1, Level2), puis-je avoir un SceneSelctor dans le sélecteur je suis arrivé deux portes représentent les deux niveaux, mais le Probleme je face est althought

J'ai créé un peu de code Pour verrouiller le niveau 2 jusqu'à ce que j'atteigne un point puis le débloquer, c'est quand je commence le jeu que le niveau 2 est toujours débloqué ce qui ne me sert pas bien

le code qui contrôle ce genre de choses est enregistré sur deux scripts j'ai utilisé Hastebin comme je ne savais pas comment copier/coller le code ici

https://hastebin.com/oluzujukid.cs

===> LevelDoor. cs

public class LevelDoor : MonoBehaviour { 

public string levelToLoad; 

public bool unlocked; 


// Use this for initialization 
void Start() { 

//first level must be always unlocked 
    PlayerPrefs.SetInt("Level1", 1); 

//when the leveltoLoad = 1 that mean that the level should be unlocked 
    if(PlayerPrefs.GetInt(levelToLoad) == 1) 
    { 
     unlocked = true; 
    } else 
    { 
     unlocked = false; 
    } 

//some animation stuff toshow doorOpen or closed 
    if(unlocked) 
    { 
     doorTop.sprite = doorTopOpen; 
     doorBottom.sprite = doorBottomOpen; 
    } else 
    { 
     doorTop.sprite = doorTopClosed; 
     doorBottom.sprite = doorBottomClosed; 
    } 
} 

===> LevelExit.cs

public class LevelExit : MonoBehaviour { 

public string levelToUnlock; 
} 


public IEnumerator levelExitCo() 
{ 
    // if the player reach the checkpoint thisline unlock the second level on SceneSelect 
    PlayerPrefs.SetInt(levelToUnlock, 1); 
} 
+0

Vous pouvez coller le code ici, puis utiliser les options de formatage: recherchez l'icône "{}". – Alex

+0

oui j'y pensais mais j'obtenais un résultat bizarre comme seulement une partie de la scipt highlited donc j'ai opté pour hastebin – EvanMedi

+0

Collez-le et faites-vous le meilleur avec le formatage. Quelqu'un d'autre éditera votre question et la corrigera si ce n'est pas 100%. Meilleure chance d'obtenir une réponse de cette façon. – Alex

Répondre

0

Voici comment je voudrais aborder ce problème:

Une fois la porte en déverrouillage, je voudrais définir une gâchette (juste derrière la porte ouverte) qui va charger une nouvelle scène. Puis pour passer d'une scène à l'autre, j'utiliser

SceneManager.LoadScene() 

https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadScene.html

Dans le deuxième niveau, vous pouvez toujours placer une autre porte, déjà ouvert, avec son déclencheur de sorte que le joueur peut revenir au premier niveau

Modifier avec une autre approche:

Si vous voulez avoir un jeu avec différents niveaux que vous pouvez déverrouiller de façon séquentielle, une chose que vous pouvez faire est de créer une variable singleton, qui est une variable unique w être partagé pour toutes les scènes de jeu, de type array of booleans. Chaque élément du tableau représentera un niveau. Au départ, vous pouvez définir tous les niveaux, mais le premier comme faux (donc tous verrouillés) et quand vous considérez qu'un niveau peut être débloqué vous changez cette valeur

Ainsi, au début de votre jeu, vous pouvez appeler un script similaire à (permet Imaginez que vous avez 10 niveaux):

public static bool[] levels = new bool[10]; 
levels[0]=true 
for (int i = 1; i < levels.Length; i++) 
{ levels[i] = false; } 
+0

je pense que vous n'avez pas eu le problème je suis confronté aux portes déjà obtenu une zone où vous cliquez sur "Jump" Button comme le Trigger le flux de mon jeu est comme ceci Quand vous atteignez un certain point de contrôle à la fin du niveau 1, Level2 se débloque et ensuite vous êtes dirigé vers LevelSelector où il y a deux portes représente les deux niveaux et vous donne la chance rejouer niveau1 ou passer au niveau2 *** mon problème est que je veux level2 dans LevelSelector verrouillé par défaut qui n'est pas en ce moment *** – EvanMedi

+0

Ok, je vais modifier ma réponse avec une approche différente –

+0

je pense que je sais en quelque sorte pourquoi je reçois un tel problème est parce que pour somereason mon réglage par défaut f ou level2 est "1" donc son get débloqué est là de toute façon je peux le définir comme "0" jusqu'à i unlockit en atteignant la fin de Level1 j'apprécierais si vous avez un teamviewer pour que vous puissiez m'aider – EvanMedi