2016-01-28 2 views
0

Я хотел бы создать систему, которая разблокирует следующий уровень после завершения одного. Я использую C# для кодаУровни разблокировки в Unity3D

Если вы полный уровень 1, разблокировке level2 и т.д ...

MainMenu построен уровень 0 и уровень выбора будет строить уровень 1, поэтому первый уровень на самом деле построить уровень 2.

public bool isLevel1; 
public bool isLevel2; 
public bool isLevel3; 
public bool isLevel4; 


// Use this for initialization 
void Start() { 

} 

// Update is called once per frame 
void Update() { 

} 
void OnMouseUp() 
{ 
    if (isLevel1) 
    { 
     Application.LoadLevel(2); 
    } 
    if (isLevel2) 
    { 
     Application.LoadLevel(3); 
    } 
    if (isLevel3) 
    { 
     Application.LoadLevel(4); 
    } 
    if (isLevel4) 
    { 
     Application.LoadLevel(5); 
    } 
} 

вот как я выбираю уровни с уровня выбора. У меня было что-то похожее на mainmenu, но я не знаю, как их заблокировать, а затем разблокировать после завершения уровня. У меня был способ заблокировать их, но я отказался от этого, так как он не работал. это было бы большой помощью, если бы кто-нибудь мог объяснить это достаточно просто или указать мне на гида, которого я пропустил. потому что я нашел несколько руководств, но они полагали, что я сделал свой уровень seleciton другим, я думаю. Я благодарю вас заранее, и я готов ответить на любые дополнительные вопросы.

+0

Хороший вопрос, это слишком широкий для сайта QA. Перейдите в gamedev или forum.unity3d или аналогичный. – Fattie

ответ

2

Я бы предположил, что PlayerPrefs, вероятно, лучший выбор для выполнения чего-то подобного, он хорошо работает для сохранения очков для игрока, поэтому сохранение разблокированных уровней может работа тоже.

Вот некоторые документы для PlayerPrefs: http://docs.unity3d.com/ScriptReference/PlayerPrefs.html

А вот хорошую ссылку на видео, показывая похоже на то, что вы хотите достичь :) https://www.youtube.com/watch?v=uw0kZ72zCvE&feature=youtu.be

+1

Для маленькой игры с небольшими резервными данными, PlayerPrefs будет в порядке, IMO. Для каждого уровня вы можете включить bool в PlayerPrefs, указав, разблокирован он или нет. Однако стоит отметить, что PlayerPrefs не предназначен для сохранения данных состояния игры. Это больше для предпочтений, таких как громкость звука, сопоставления управления и т. Д. Итак, если в вашей игре есть файлы сохранения/загрузки или несколько игр могут быть сохранены на одном компьютере, вы должны в конечном счете искать сохранение игровых данных в отдельном файле. – Remption

+1

В чем разница между данными игрового состояния и громкостью звука? PlayerPrefs отлично подходят по назначению. Нет необходимости рассматривать bool для каждого уровня, просто целое число, определяющее верхний уровень: int level = PlayerPrefs.GetInteger («Уровень», 0); если требуется больше информации, использование строки JSON более уместно. Вы можете посмотреть этот https://unitygem.wordpress.com/leaderboard-and-saving-data/ – Everts

+0

Я следил за видео, но каждая строка ошибочна, потому что я работал с C#, и он был с JS. Я не упоминал об этом раньше, чем использовать C#, но я изменил это в сообщении. извините за потраченное время –

0

Может включать скрипт на какой-то пустой игровой объект (убедитесь, вы вызываете Object.DontDestroyOnLoad(transform.gameObject), чтобы объект оставался при изменении уровней), и каждый раз, когда вы завершаете уровень, изменяйте логическую переменную в этом пустом объекте, чтобы обозначить, что уровень был выполнен хотя бы один раз. Затем откройте следующий уровень в пользовательском интерфейсе, если boolean, означающий предыдущий уровень, был завершен, true.

Если ваш персонаж автоматически переходит на следующий уровень после завершения предыдущего, вы можете вместо этого использовать OnLevelWasLoaded(int level). level В этом случае это номер уровня, который был только что загружен (так что для вас 3 будет вашим реальным первым уровнем). Затем измените переменные boolean пустого игрового объекта в этой функции, а не в конце предыдущего уровня. Это может быть наиболее полезно, если, когда вы закончите уровень, есть разные уровни, которые вы могли бы перейти к следующему (есть не один вариант разблокировки).

Смежные вопросы