Menu
CoddyTech

Melhor Tempo

Parte da seção Criando jogos de verdade do Journey de Unity da Coddy. Lição 53 de 56.

challenge icon

Desafio

Médio

Última etapa: cada nível guarda o seu melhor tempo. Mantenha tudo das lições anteriores. O HUD de cada nível tem um BestText no canto superior direito, e a cena o coloca no novo campo bestText de FinishLine.

Em FinishLine (adicione using TMPro;):

  • Um campo TMP_Text bestText definido pelo Inspector, e o tempo da partida: um float que aumenta a cada quadro por Time.deltaTime.
  • Cada nível salva seu melhor tempo com sua própria chave do PlayerPrefs: BestTime_ e o nome do nível, como BestTime_Level1.
  • Em Start, mostre o melhor tempo salvo do nível com uma casa decimal, como Best: 12.4 s, ou Best: none quando ainda não houver um.
  • Quando o jogador cruzar a linha de chegada, antes de carregar o próximo nível, salve o tempo da partida se o nível ainda não tiver um melhor tempo ou se a partida o superar. Uma partida mais lenta não altera o melhor tempo.

Pressione Play e marque um tempo, depois tente superá-lo e, em seguida, Check.

Experimente você mesmo

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);
    }
}

Todas as lições de Criando jogos de verdade