Выживание
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 47 из 50.
Задание
СреднеПоследний шаг: забег заканчивается, а лучший результат сохраняется. Сохраните всё из предыдущих уроков. На Canvas есть скрытая панель GameOverPanel с элементами ResultText, BestText и RestartButton с надписью Fight again, а на объекте GameManager находится скрипт GameManager; в Inspector назначьте для него hero, spawner, gameOverPanel, resultText, bestText и restartButton.
- Добавьте в
Heroсобытиеpublic event Action Died, которое вызывается, когда здоровье достигает 0, после того как герой отключает себя. - В
GameManager.csдобавьте классBestRunс атрибутом[System.Serializable]и полямиpublic int waveиpublic int kills. GameManagerподписывается наDiedгероя и наEnemy.Died, чтобы подсчитывать убийства за этот забег: подпишитесь вOnEnable, отпишитесь вOnDisable. ВStartон загружает лучший результат с помощьюJsonUtilityиз файлаbest.jsonвApplication.persistentDataPath, если этот файл существует, скрывает панель и настраиваетrestartButtonдля перезапуска игры.- Когда герой погибает, остановите игру (
Time.timeScale0). Результат забега — это значениеWaveу спавнера и количество убийств. Новый лучший результат получается, если достигнута более высокая волна или та же волна с большим количеством убийств: тогда он становится лучшим и сохраняется вbest.jsonс помощьюJsonUtility.ToJson. Покажите результат забега вresultTextв видеWave 2, 7 kills, а лучший результат — вbestTextв видеBest: wave 3, 12 kills, затем покажите панель. - При перезапуске верните временной масштаб к 1 и загрузите сцену заново.
Нажмите Play и сражайтесь, пока не погибнете, затем попробуйте побить свой рекорд. После этого нажмите Check.
Попробуйте сами
using UnityEngine;
public class GameManager : MonoBehaviour
{
// В одном из следующих уроков здесь будет добавлена логика завершения забега и учёта лучшего результата.
}
Все уроки раздела Архитектура игр в Unity
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыСовместная работа компонентовПовторение: модульная турель4Сериализованные данные
Сериализуемые классыСписки в InspectorПеречисления в InspectorПовторение: таблица лута2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействия5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиВолны как данныеПовторение: база предметов