Повторение: менеджер раундов
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 16 из 60.
В этой главе у игры появился один управляющий объект: синглтон, к которому остальные обращаются без поля, и состояния, между которыми он переключается. Менеджер раунда использует и то и другое.
Задание
ЛегкоЗаверши сбор монет; SetState уже написан.
- Добавь
public static RoundManager Instance;и присвой значение вAwake(). - В
Update()переключайся поstate: в Ready жди нажатия Space; в Playing отсчитывайtimeLeftв обратном порядке, а затем переходи к следующему Ready или к Finished после последнего раунда. public bool TakeCoin(): только в состоянии Playing засчитывай монету, показывайCoins: 2и возвращай true.Coin.csуничтожает засчитанную монету, которой касается Player.
Нажми «Играть» и пройди все три раунда. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
using TMPro;
public enum RoundState { Ready, Playing, Finished }
public class RoundManager : MonoBehaviour
{
// синглтон: статический Instance, задаваемый в Awake()
public GameObject readyPanel;
public GameObject playPanel;
public GameObject finishedPanel;
public TMP_Text roundText;
public TMP_Text coinsText;
public TMP_Text finalText;
public int rounds = 3;
public float roundTime = 4f;
private RoundState state;
private int round = 1;
private int coins;
private float timeLeft;
void Start()
{
SetState(RoundState.Ready);
}
void Update()
{
// ветвление по state: Ready ожидает нажатия Space; Playing ведёт обратный отсчёт времени
}
void SetState(RoundState next)
{
state = next;
readyPanel.SetActive(next == RoundState.Ready);
playPanel.SetActive(next == RoundState.Playing);
finishedPanel.SetActive(next == RoundState.Finished);
if (next == RoundState.Ready) roundText.text = "Round " + round;
if (next == RoundState.Playing) timeLeft = roundTime;
if (next == RoundState.Finished) finalText.text = "Coins: " + coins;
}
// TakeCoin(): монета засчитывается только в состоянии Playing
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банке3Менеджер игры
Один скрипт управляет игройОдиночкаСостояния игрыПереключение состоянияПовторение: менеджер раундов6Проект: Бесконечный раннер
Три полосыПрепятствия впередиПотренируйтесь самостоятельно: Песочница Unity