- Home /
Question by
hitenpatel34 · Sep 28, 2020 at 10:48 AM ·
level select
My level is unlocked just before the level is completed this is my scripts ,My level is unlocked just before the level is completed this is my script
[System.Serializable] public class Level { public string LevelText; public int UnLocked; public bool IsInteractable;
// public Button.ButtonClickedEvent OnClickEvent;
}
public Transform Spacer;
public GameObject levelButton;
public List<Level> LevelList;
void Start()
{
// DeleteAll();
FillList();
}
void FillList()
{
foreach (var level in LevelList)
{
GameObject newbutton = Instantiate(levelButton) as GameObject;
LevelButton button = newbutton.GetComponent<LevelButton>();
button.LevelText.text = level.LevelText;
if (PlayerPrefs.GetInt("Level" + button.LevelText.text) == 1)
{
level.UnLocked = 1;
level.IsInteractable = true;
}
button.unLocked = level.UnLocked;
button.GetComponent<Button>().interactable = level.IsInteractable;
button.GetComponent<Button>().onClick.AddListener(() => loadLevels ("Level" + button.LevelText.text)); //loads a level based on the name that the scene has been saved as
if (PlayerPrefs.GetInt ("Level" + button.LevelText.text + "_score") > 5000)
{
button.StarGold1.SetActive (true);
}
if (PlayerPrefs.GetInt ("Level" + button.LevelText.text + "_score") > 10000)
{
button.StarGold2.SetActive (true);
}
if (PlayerPrefs.GetInt ("Level" + button.LevelText.text + "_score") > 20000)
{
button.StarGold3.SetActive (true);
}
newbutton.transform.SetParent(Spacer,false);
}
SaveAll();
}
void SaveAll()
{
// if (PlayerPrefs.HasKey("Level1"))
// {
// return;
// }
// else
{
GameObject[] allButtons = GameObject.FindGameObjectsWithTag("LevelButton");
foreach (GameObject buttons in allButtons)
{
LevelButton button = buttons.GetComponent<LevelButton> ();
PlayerPrefs.SetInt("Level" + button.LevelText.text, button.unLocked);
}
}
}
void DeleteAll()
{
PlayerPrefs.DeleteAll ();
}
void loadLevels(string value)
{
Application.LoadLevel (value);
// SceneManager.LoadScene (value);
}
}
public class GameManager : MonoBehaviour { bool gamehasEnded = false;
public float restartDelpy = 1f;
public GameObject levelUi;
int score = 50000;
private int LevelAmount = 10; //this needs to be updated if the level count changes
private int CurrentLevel;
// Start is called before the first frame update
void Start()
{
CheckCurrentLevel();
// PlayerPrefs.SetInt("Level2" , 1);
// PlayerPrefs.SetInt("Level_score" , score);
// StartCoroutine (Time ());
}
// Update is called once per frame
void Update()
{
}
IEnumerator time()
{ yield return new WaitForSeconds (3f); Application.LoadLevel("LevelMenu"); }
void CheckCurrentLevel()
{
for (int i = 1; i < LevelAmount; i++)
{
if (SceneManager.GetActiveScene().name == "Level" + i)
{
CurrentLevel = i;
SaveMyGame ();
}
}
}
void SaveMyGame()
{
int NextLevel = CurrentLevel + 1;
if (NextLevel < LevelAmount)
{
PlayerPrefs.SetInt ("Level" + NextLevel.ToString(), 1);//unlock next level
PlayerPrefs.SetInt ("Level" + CurrentLevel.ToString () + "_score", score);
}
else
{
PlayerPrefs.SetInt ("Level" + CurrentLevel.ToString () + "_score", score);
}
}
Comment
Your answer
Follow this Question
Related Questions
Why are no functions showing on my button 1 Answer
Level selection menu (grid) and scrolling it!! 1 Answer
Purchase Level Unlock System 1 Answer
how do I set up a level select scene in my game 3 Answers
Alternate solution to onGUI for GUI? 4 Answers