level Selctor ETOILES
Publié : 18 Fév 2021 17:25
Salut tout le monde, j'espère que vous allez bien.
Alors voilà, je travail sur un petit jeu 2D, façon Mario, tout fonctionne à merveille et là j'ai une idée :
rajouter un système d'étoiles. Ainsi, le joueur pourra récupérer une, 2 ou 3 étoiles su chaque niveau qui s'afficheront par la suite sur le bouton du dit-niveau. Et c'est là, où j'ai bloqué : en partie ca fonctionne, sauf que les étoiles, apparaissent sur tous les boutons de tous les nivaux et non-pas celui concerné, alors j'ai tout essayé et j'ai vu tous les tutos mais rien n'y fait, j'allais abandonner cette idée quand j'ai pensé au forum. Donc vous êtes ma dernière chance .
Alors je partage avec vous mes scripts que je pense concerné par le problème, en espérant que vous puissiez m'aider.
c'est le script que j'ai rajouté sur chaque bouton de niveau :
ici une partie du script qui permet de sauvegarder les étoiles :
c'est le script qui permet de gérer les boutons des niveaux :
Je me rend bien compte, que j'en demande trop, je suis désolé de vous ennuyer, mais j'ai vraiment désespéré...
Alors voilà, je travail sur un petit jeu 2D, façon Mario, tout fonctionne à merveille et là j'ai une idée :
rajouter un système d'étoiles. Ainsi, le joueur pourra récupérer une, 2 ou 3 étoiles su chaque niveau qui s'afficheront par la suite sur le bouton du dit-niveau. Et c'est là, où j'ai bloqué : en partie ca fonctionne, sauf que les étoiles, apparaissent sur tous les boutons de tous les nivaux et non-pas celui concerné, alors j'ai tout essayé et j'ai vu tous les tutos mais rien n'y fait, j'allais abandonner cette idée quand j'ai pensé au forum. Donc vous êtes ma dernière chance .
Alors je partage avec vous mes scripts que je pense concerné par le problème, en espérant que vous puissiez m'aider.
c'est le script que j'ai rajouté sur chaque bouton de niveau :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class starLevelShow : MonoBehaviour
{
public GameObject star1;
public GameObject star2;
public GameObject star3;
// Start is called before the first frame update
void Start()
{
if(PlayerPrefs.GetInt("saveStar1")== 1 ){
star1.SetActive(true);
}
if(PlayerPrefs.GetInt("saveStar2")== 1 ){
star2.SetActive(true);
}
if(PlayerPrefs.GetInt("saveStar3")== 1 ){
star3.SetActive(true);
}
}
Code : Tout sélectionner
if(Inventory.instance.star1Count== 1 ){
star1.SetActive(true);
saveStar1=1;
PlayerPrefs.SetInt("saveStar1", 1);
}
if(Inventory.instance.star2Count== 1 ){
star2.SetActive(true);
saveStar2=1;
PlayerPrefs.SetInt("saveStar2", 1);
}
if(Inventory.instance.star3Count== 1 ){
star3.SetActive(true);
saveStar3=1;
PlayerPrefs.SetInt("saveStar3", 1);
}
Code : Tout sélectionner
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class LevelSelector : MonoBehaviour
{
public Button[] levelButtons;
private void Start(){
int levelReached= PlayerPrefs.GetInt("levelReached", 1);
for (int i = 0; i < levelButtons.Length; i++)
{
if(i+1 > levelReached){
levelButtons[i].interactable=false;
}
}
}
public void LoadLevelPassed(string levelName){
SceneManager.LoadScene(levelName);
}
}