Próxima Fase
Parte da seção Criando Jogos de Verdade do Journey de Unity da Coddy. Lição 19 de 60.
Cada cena na lista de cenas da build tem um número, seu índice de build: 0 para a primeira, 1 para a seguinte e assim por diante. LoadScene recebe esse número, assim como um nome, e SceneManager.sceneCountInBuildSettings informa quantas cenas há na lista. Como os níveis estão em ordem na lista, o próximo nível é o índice da cena ativa mais 1. Esta saída carrega o próximo nível e, depois do último nível, para:
void OnTriggerEnter(Collider other)
{
if (!other.CompareTag("Player")) return;
int next = SceneManager.GetActiveScene().buildIndex + 1;
if (next < SceneManager.sceneCountInBuildSettings)
{
SceneManager.LoadScene(next);
}
else
{
Debug.Log("You finished the game!");
}
}Com quatro cenas, os índices vão de 0 a 3 e sceneCountInBuildSettings é 4; portanto, no último nível, next é 4, um a mais que o último índice. É por isso que o teste é next < sceneCountInBuildSettings: LoadScene(4) não carregaria nada e registraria o erro do Unity Cannot load scene: Invalid scene name (empty string) and invalid build index 4.
Agora, um único script de saída serve para todos os níveis, e nenhum deles especifica o nome de uma cena. Para adicionar um nível, você adiciona a cena dele à lista; para mudar a ordem, arrasta as cenas pela lista.
Desafio
FácilFaça cada objetivo abrir o próximo nível.
- Em
Start(), exiba"Level " + level + " of " + levelsemlevelText:levelé obuildIndexda cena ativa,levelséSceneManager.sceneCountInBuildSettings - 1. - Em
OnTriggerEnter, para o Player, carreguebuildIndex + 1ou0(o menu) quando esse valor não for menor quesceneCountInBuildSettings.
Pressione “Jogar” e conclua os três níveis: o menu aparecerá novamente. Depois, clique em “Verificar”.
Experimente você mesmo
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;
public class Goal : MonoBehaviour
{
public TMP_Text levelText;
void Start()
{
// mostre "Level 2 of 3": o número deste nível e quantos níveis existem
}
void OnTriggerEnter(Collider other)
{
// o jogador chegou ao objetivo: carregue o próximo nível ou o menu após o último nível
}
}
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