Bug with Lock Unlock System
this script is on a gameObject in the level selector scene
public class LevelButtons : MonoBehaviour {
[SerializeField] Button[] levelButtons;
public int levelReached;
public int level = 0;
private void Start()
{
levelReached = PlayerPrefs.GetInt("levelReached", 1);
string currentSceneName = SceneManager.GetActiveScene().name;
if (currentSceneName == "Level Selector")
{
HandleButtons();
}
}
private void HandleButtons()
{
for (int i = 0; i < levelButtons.Length; i++)
{
if (i + 1 > levelReached) // so that the first level is always accessable
{
levelButtons[i].interactable = false;
}
}
}
}
and this script is in every level (represents win condition) private void OnTriggerEnter2D(Collider2D collision) {
if(collision.gameObject.tag == "Player")
{
PlayerPrefs.SetInt("levelReached", levelButtons.levelReached + 1);
Time.timeScale = 0.1f;
StartCoroutine(WaitThenGo());
}
}
IEnumerator WaitThenGo()
{
yield return new WaitForSecondsRealtime(2);
Time.timeScale = 1f;
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}
Problem/Bug: im increasing the reachedLevel variable each time my player hits the win collider and that leads to next level being enabled but the bug is ... even if i replay the first level its still increasing the variable and unlocking the next level
i tried a lot of stuff and its not working for eg. (using if statements with tag checks... or scene name checks ... or even public variables... please help <3
Answer by totti88 · Sep 16, 2019 at 11:04 AM
it worked! the solution was infront of me the whole time ...
i just added:
if (SceneManager.GetActiveScene().buildIndex - 2 == levelButtons.levelReached)
{
PlayerPrefs.SetInt("levelReached", levelButtons.levelReached + 1);
}
the "2" is just the (number of scenes in my build settings before the first level) - 1(cuz build index starts from 0))
Your answer
Follow this Question
Related Questions
unlock levels (or items ) without PlayerPrefs 0 Answers
How to set up unlockable Prefabs? 0 Answers
PlayerPref doesnt work 2 Answers
PlayerPrefs Not Consistently Saving Stats 0 Answers
User Playerprefs to save unlocked level 0 Answers