Если вы хотите, чтобы следующий уровень разблокировался после завершения предыдущего уровня, вы должны составить массив всех уровней в игре и пометить каждый из них как завершенный после их завершения. Исходя из этого, вы можете перейти на следующий уровень в массиве и «разблокировать» его.
псевдокод:
int[] levels = new int[15]; // 15 levels in existance
if (level1completed == true)
{
levels[0] = 1; // set the valua to 1 if it has been completed
PlayerPrefs.SetInt("level1", levels[0]); // make a file called "level1" and give it a value of levels[0]
}
Теперь, когда у вас есть код для загрузки уровня на клике, вы должны использовать
оператор if для проверки завершения предыдущего уровня
if (buttonlevel2clicked == true)
{
levels[0] = PlayerPrefs.GetInt("level1", 0); // retreive the int from the file and assign it to variable
if (levels[0] == 1) //checks if level 1 has been completed
{
level2.load(); //loads level 2
}
}
Этот код может быть улучшен путем несложного кодирования загрузки уровней, но это должно дать вам представление о том, что делать (я не проверял)
Playerprefs >> https://docs.unity3d.com/ScriptReference/PlayerPrefs.html