- Home /
Level Select screen Messed Up
I have followed a Youtube video on this & tried to apply it to my own game. Upon dying in level 2, I am sent back to the Level Select menu (image attached) but the level 2 start button is still grayed out and locked despite the button On click settings being set up to how they should be. Attached is the script that should be handling that, and then the level control script. If anyone can find any suggestions or solutions to this problem they would be very much appreciated! Thanks!
public class LevelSelectController : MonoBehaviour {
public Button level02Button, level03Button;
int levelPassed;
void Start()
{
levelPassed = PlayerPrefs.GetInt("LevelPassed");
level02Button.interactable = false;
level03Button.interactable = false;
switch (levelPassed) {
case 1:
level02Button.interactable = true;
break;
case 2:
level02Button.interactable = true;
level03Button.interactable = true;
break;
}
}
public void levelToLoad (int level)
{
SceneManager.LoadScene (level);
}
public void resetPlayerPrefs()
{
level02Button.interactable = false;
level03Button.interactable = false;
PlayerPrefs.DeleteAll ();
}
}
public class LevelControlScript : MonoBehaviour {
public static LevelControlScript instance = null;
GameObject levelSign, gameOverText, youWinText;
int sceneIndex, levelPassed;
void Start()
{
if (instance == null)
instance = this;
else if (instance != this)
Destroy(gameObject);
levelSign = GameObject.Find("LevelNumber");
sceneIndex = SceneManager.GetActiveScene().buildIndex;
levelPassed = PlayerPrefs.GetInt("LevelPassed");
}
public void youWin()
{
if (levelPassed < sceneIndex)
{
PlayerPrefs.SetInt("LevelPassed", sceneIndex);
}
}
public void youLose()
{
levelSign.gameObject.SetActive(false);
Invoke("loadMainMenu", 1f);
}
void loadMainMenu()
{
SceneManager.LoadScene("levelSelect");
}
}
Please add a check to see if the object you are trying to destroy is still existent. You can do this if you add a if (YOUROBJECT != null) Destroy(YOUROBJECT);
Ins$$anonymous$$d of: Destroy(YOUROBJECT);
Answer by unity_21erushbrook · Jun 03, 2019 at 07:26 AM
Between line 10 and line 15 of the LevelSelectController.cs script, your case 1 dictates that only if level 2 is PASSED is it clickable. You need to change the levelbutton02.interactable to true when level 1 is completed, not level 2. Tell me if you need help doing this.
Also just a heads up, in C#, the na$$anonymous$$g convention is to have capitals on your methods and classes, and lower case on your variables. i.e. youLose() should be YouLose(). Doesn't really matter, its just good practice.
@unity_21erushbrook Hey, really appreciate the reply! I'm sorry I'm still extremely new to all of this and am unsure how to do that. Would I need to create a new variable & a new switch method?
Your answer
![](https://koobas.hobune.stream/wayback/20220612202527im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Point of light bug 0 Answers
Level corrupted on build 0 Answers
Why is the level not properly working when I load it? 0 Answers
Clipping Errors with LineRenderer? 0 Answers
2D Platformer Bug 0 Answers