Reiniciar a Fase
Parte da seção Criando Jogos de Verdade do Journey de Unity da Coddy. Lição 18 de 60.
A maneira mais rápida de reiniciar uma fase é carregá-la novamente. SceneManager.GetActiveScene() retorna a cena que está aberta agora, e seu name (ou seu buildIndex) é o que LoadScene recebe. Este botão “Reiniciar” em um painel de fim de jogo chama:
public void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}O Unity destrói a cena aberta e a recria a partir do arquivo da cena. Cada objeto volta ao lugar definido pela cena, inclusive uma caixa que o jogador derrubou; cada campo recebe novamente o valor do Inspector, e Awake e Start são executados de novo. Nenhum código precisa recolocar as coisas uma por uma. Como o botão solicita a cena ativa em vez de um nome como "Level3", o mesmo script reinicia qualquer fase em que seja colocado.
Um campo static não faz parte da cena: ele pertence à classe, então uma recarga o deixa como estava. Um private static float bestTime; mantém o melhor tempo entre reinicializações, enquanto um private float time; recomeça em 0 com a nova cena. GameManager.Instance também é static: após uma recarga, ele aponta para o GameManager destruído até que o Awake do novo GameManager o defina.
Desafio
FácilUma queda deve reiniciar a fase em que o jogador está e contar a queda.
- Adicione
using UnityEngine.SceneManagement;e altere o contador paraprivate static int falls;, para que ele seja mantido após o recarregamento. - Em
Update(), quandoplayer.position.y < fallY, executefalls++;e carregueSceneManager.GetActiveScene().name.
Pressione “Jogar” e saia de uma plataforma pelas bordas nos dois níveis: Falls: 1, depois Falls: 2. Em seguida, clique em “Verificar”.
Experimente você mesmo
using UnityEngine;
using TMPro;
public class LevelRestart : MonoBehaviour
{
public Transform player;
public TMP_Text fallsText;
public float fallY = -3f;
private int falls;
void Start()
{
fallsText.text = "Falls: " + falls;
}
void Update()
{
// abaixo de fallY: conte a queda e reinicie a fase em que o jogador está
}
}
Todas as lições de Criando Jogos de Verdade
1Texto na tela
Canvas e textoExiba a pontuaçãoFormate númerosUm cronômetro regressivoRevisão: velocímetro4Cenas e Fases
Carregar uma CenaReiniciar a FasePróxima FaseManter entre CenasRevisão: Seleção de Fases2Botões e telas
Botões e onClickLambdasConectando no InspectorPainéis ligados e desligadosBarras de vidaRevisão: Loja de melhorias5Salvando com PlayerPrefs
Salvar um númeroCarregar com um valor padrãoRecordeSalvar configuraçõesRevisão: Moedas no bancoPratique por conta própria: Playground de Unity