Menu
CoddyTech

Лучшее время

Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 53 из 56.

challenge icon

Задание

Средне

Последний шаг: каждый уровень запоминает ваше лучшее время. Сохраните всё из предыдущих уроков. В HUD каждого уровня вверху справа находится BestText, а на сцене он привязан к новому полю bestText в FinishLine.

В FinishLine (добавьте using TMPro;):

  • Поле TMP_Text bestText, которое задаётся в Inspector, и время прохождения: float, которое увеличивается на Time.deltaTime каждый кадр.
  • Каждый уровень сохраняет своё лучшее время под отдельным ключом PlayerPrefs: BestTime_ и название уровня, например BestTime_Level1.
  • В Start покажите сохранённое лучшее время уровня с одним знаком после запятой, например Best: 12.4 s, или Best: none, если лучшего времени пока нет.
  • Когда игрок пересекает финиш, до загрузки следующего уровня сохраните время прохождения, если у уровня ещё нет лучшего времени или если результат лучше него. Более медленное прохождение не меняет лучшее время.

Нажмите Play и установите время, затем попробуйте его улучшить, а после нажмите Check.

Попробуйте сами

using UnityEngine;
using UnityEngine.SceneManagement;

public class FinishLine : MonoBehaviour
{
    void OnTriggerEnter(Collider other)
    {
        if (other.GetComponent<Player>() == null) return;

        Scene level = SceneManager.GetActiveScene();
        Debug.Log(level.name + " complete!");
        int next = level.buildIndex + 1;
        if (next >= SceneManager.sceneCountInBuildSettings)
        {
            next = 0;
        }
        SceneManager.LoadScene(next);
    }
}

Все уроки раздела Создание настоящих игр