Конец ночи
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 60 из 60.
Последнее испытание завершает целую игру: менеджер состояний, пауза, останавливающая время, две концовки и перезапуск, который возвращает масштаб времени к исходному.
Задание
СложноДобавь паузу, два варианта завершения и перезапуск.
pauseButtonпереключает только состояния Playing и Paused: в состоянии Paused устанавливаетTime.timeScaleв 0 и показываетpausePanel, а в состоянии Playing отменяет оба действия.- При 0 секундах ночь считается Won. В состояниях Won или Lost: шкала времени равна 0, отображается
endPanelс текстомYou survived the night!илиThe bats got youвendText. restartButtonустанавливает шкалу времени в 1 и перезагружает сцену.
Нажми «Играть», поставь игру на паузу, проиграй, сыграй ещё раз. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
public class GameManager : MonoBehaviour
{
public enum State { Playing, Paused, Won, Lost }
public static GameManager Instance;
public float nightLength = 15f;
public float spawnEvery = 2f;
public GameObject batPrefab;
public Transform[] spawnPoints;
public TMP_Text dawnText;
public Button pauseButton;
public GameObject pausePanel;
public GameObject endPanel;
public TMP_Text endText;
public Button restartButton;
public State state;
private float timeLeft;
private float spawnTimer;
void Awake()
{
Instance = this;
}
void Start()
{
state = State.Playing;
timeLeft = nightLength;
ShowDawn();
}
void Update()
{
if (state != State.Playing) return;
timeLeft -= Time.deltaTime;
spawnTimer += Time.deltaTime;
if (spawnTimer >= spawnEvery)
{
spawnTimer -= spawnEvery;
Transform point = spawnPoints[Random.Range(0, spawnPoints.Length)];
Instantiate(batPrefab, point.position, Quaternion.identity);
}
ShowDawn();
}
public void Lose()
{
if (state != State.Playing) return;
state = State.Lost;
}
void ShowDawn()
{
dawnText.text = "Dawn in " + Mathf.CeilToInt(timeLeft);
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банкеПотренируйтесь самостоятельно: Песочница Unity