Лучший забег
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 32 из 56.
Задание
СреднеПоследний шаг: запомните лучший забег. Сохраните всё из предыдущих уроков. На холсте вверху справа есть BestText, а на панели — скрытый NewBestText (New best!); сцена помещает их в два новых поля GameManager: public TMP_Text bestText; и public GameObject newBestText;. Сохраните лучший результат под ключом BestRun, в целых метрах:
- В
Start()загрузите лучший результат (0 для нового игрока) и отобразите его в видеBest: 57 m. - В
GameOver(), если количество целых метров забега —Mathf.FloorToInt(distance)— превысило лучший результат, сохраните новый рекорд, отобразите его и покажитеnewBestText. Более короткий забег ничего не меняет.
Лучший результат сохраняется при повторном запуске и после выхода из игры. Нажмите Play, установите рекорд и попробуйте его побить, затем нажмите Check.
Попробуйте сами
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
public enum GameState { Playing, GameOver }
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
public float speed = 10f;
public float speedUp = 0.5f;
public float maxSpeed = 20f;
public TMP_Text distanceText;
public GameObject gameOverPanel;
public Button restartButton;
public GameState state = GameState.Playing;
private float distance;
void Awake()
{
Instance = this;
}
void Start()
{
restartButton.onClick.AddListener(Restart);
}
void Update()
{
if (state != GameState.Playing) return;
speed = Mathf.Min(speed + speedUp * Time.deltaTime, maxSpeed);
distance += speed * Time.deltaTime;
distanceText.text = "Distance: " + Mathf.FloorToInt(distance) + " m";
}
public void GameOver()
{
state = GameState.GameOver;
speed = 0f;
gameOverPanel.SetActive(true);
}
void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня7Управление временем
Пауза с timeScaleЗамедленное движениеНемасштабируемое времяПовторение: Bullet Time10Проект: 3D-платформер
ТрассаДвижущиеся платформы2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банке3Менеджер игры
Один скрипт управляет игройОдиночкаСостояния игрыПереключение состоянияПовторение: менеджер раундов6Проект: бесконечный раннер
Три полосыПрепятствия впереди