Блокировка и разблокировка уровней Unity 3D C # - PullRequest
0 голосов
/ 17 января 2019

Я сделал 3D-игру с Unity и C #, и я не знаю, как создать меню уровней с заблокированными уровнями и разблокировать систему.

https://imgur.com/a/GuXc75k

SelectLevel.cs (меню с уровнями):

using UnityEngine;
using UnityEngine.SceneManagement;


public class SelectLevel : MonoBehaviour
{

  public void selectLevel()
  {
    switch (this.gameObject.name) {
      case "Level01" :
      SceneManager.LoadScene("Level01");
      break;

      case "Level02" :
      SceneManager.LoadScene("Level02");
      break;

    }
  }

}

LevelComplete.cs:

using UnityEngine;
using UnityEngine.SceneManagement;

public class LevelComplete : MonoBehaviour
{
    public void LoadNextLevel ()
    {

      SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
    }
}

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Если вы хотите, чтобы следующий уровень разблокировался после завершения предыдущего уровня, вы должны составить массив всех уровней в игре и пометить каждый из них как завершенный после их завершения. Исходя из этого, вы можете перейти на следующий уровень в массиве и «разблокировать» его.

псевдокод:

        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

0 голосов
/ 17 января 2019

Я предлагаю использовать интерактивную функцию с кнопками. Так что имейте некоторый менеджер, который отслеживает, когда уровень завершен / разблокирован, и на основе этого установите, чтобы Button был либо интерактивным, либо нет. Подобный вопрос вы можете найти с кодом здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...