Bem-vindo de volta meus colegas desenvolvedores de jogos
para um novo vídeo longo.
Não vamos perder tempo nenhum.
E este vídeo, o que fazemos é quando matamos os inimigos,
isso não é muito emocionante.
Só vou te dizer, quando matarmos os inimigos,
escolhemos dois números aleatórios.
É isso.
Isso é tudo o que fazemos.
No próximo vídeo, você verá o porquê,
mas é um conceito bastante complicado
que aprendemos um novo tipo de loop.
Aprendemos as tabelas de verdade.
Então, vale muito, muito a pena.
Então isso não é perder mais tempo e vamos começar.
Oh, caso.
Então agora estamos completando as ondas.
É hora de sair da sala e ir para a próxima.
Então, como vamos fazer isso?
Vamos tirar um breve momento para falar sobre isso.
Vamos para os quartos, as portas.
E como você pode ver, temos
duas portas com dois portais atrás delas.
E isso é algo que será o
mesmo em todos os níveis.
Eu não queria adicionar muita coisa só para manter
tudo menos complicado e compreensível.
Então, o que temos aqui são
os dois portais e as duas portas.
Então, o que acontece quando matamos
todas as ondas ou todos os inimigos na última onda,
acenar, essas portas terão a capacidade de se abrir.
Mas, como você viu no jogo Hades,
sempre temos duas opções.
Então, temos dois portais que podemos passar por 14,
digamos o afiado, o outro para outro
arena inimiga.
E é isso que queremos também fazer.
Queremos ter a opção de ir para um desses dois?
Então, precisaremos definir esses dois portais
antemão e essas duas portas também de antemão.
Mais tarde, estaremos criando talvez algum tipo
de nome que apareça quando estivermos ao lado da porta.
Então, quando o abrimos, sabemos para onde estamos indo.
Mas, por enquanto, vamos nos concentrar em realmente mudar o The,
enquanto se clicarmos no Portal e desbloquearmos isso,
você pode ver que temos o nível 2
vai ou o nível a ser carregado.
Então, o que faremos é tentar
mudá-los assim que matarmos os inimigos.
Então, vamos começar.
Vou voltar ao nosso código
e a primeira coisa que vou
fazer é entrar no nível de saída aqui.
E em vez de usar uma string,
vamos usar um número inteiro.
Então, um número inteiro.
Por que estamos trabalhando com números inteiros?
Bem, porque aqui estaremos
usando vários métodos no gerenciador de cenas
que só podem usar
um parâmetro inteiro com o qual podemos trabalhar.
Então é por isso que estamos mudando isso para pôr em perigo.
Mais tarde, você verá por que tudo isso está acontecendo.
Vou me certificar de que isso seja
comentado e
mais tarde voltaremos e mudaremos.
Mas, por enquanto, porque o nível de carregamento está
tomando um número inteiro ou você sabe o que, vamos mantê-lo.
E vamos mantê-lo.
E vamos para o gerenciador de níveis.
E no próximo nível de carregamento,
em vez de uma string,
vamos usar um número inteiro.
Portanto, o próximo nível é um número inteiro,
e a cena de carga pode realmente
ter um número inteiro como parâmetro.
Então, tudo está funcionando bem por enquanto.
A próxima coisa que precisamos fazer é definir as
duas portas ou as saídas de dois níveis.
E porque já temos tudo
configurado e sabemos que sempre haverá duas portas.
Para simplificar,
vou criar
um nível público e de nível
para sublinhar um.
E então eu vou copiar isso
e torná-lo o sublinhado dois.
Então, isso é para o segundo nível.
E então eu também vou criar uma saída de nível público.
E este será o sublinhado de saída de nível
um e o sublinhado de saída de nível dois.
Então, agora temos a estratégia de saída de dois níveis
e vamos seguir em frente e criar um seletor de níveis.
Então, vou rolar para baixo,
mas não muito, talvez aqui.
E vou dizer que tenho
um seletor público de nível vazio.
E aqui vamos empregar
algumas coisas.
Então, o que queremos fazer é escolher um nível.
Mas isso não é tão simples quanto você pode pensar, porque nós,
digamos que estamos atualmente no nível do esqueleto.
Este Kelly é. Certo.
Digamos que tenhamos a opção de ir,
por exemplo, à loja.
Um deles será a loja.
Vamos tentar escolher um nível aleatório.
Então, temos a opção de ir para o topo na primeira porta,
mas na segunda porta temos a opção de ir
para o crânio é mas já estivemos no Skelly.
Então, o que precisamos ter em mente é que toda
vez que queremos ter a opção de escolher outro nível,
ele tem que ser diferente
do nível atual em que estamos.
E não só isso,
precisamos também ter o nível.
Na porta esquerda diferente
do nível na porta direita.
Então, essencialmente, precisamos de três coisas para acompanhar.
O nível em que estamos atualmente.
O nível que irá para se passarmos pela primeira porta
e o nível passará se passarmos
pela segunda porta.
Então, como vamos fazer isso?
Como vamos implementar isso?
Encontrando coisas enquanto ainda estamos no mesmo nível?
É aqui que usaremos algo chamado loop while.
Então deixe-me dizer o que é um loop while e você verá
quão importante é nessa situação aqui.
Então, antes de tudo, é semelhante ao for loops at
executa um bloco de código várias vezes.
Em vez de determinar o número de vezes antes da mão,
esperamos até que uma determinada condição seja atendida.
Então isso é perfeito para o nosso caso aqui,
porque não sabemos quantas vezes temos
passar procurando um nível,
mas sabemos que continuaremos procurando enquanto
o nível que queremos definir
a primeira porta é diferente do nível atual.
E também continuaremos procurando enquanto
o segundo nível na
segunda porta é diferente do primeiro,
que já é
diferente do nível em que estamos atualmente.
Então deixe-me apenas levá-lo através
da estrutura do loop for.
Você pode ver aqui,
nós temos o tempo.
Abrimos os suportes,
colocamos em uma condição.
É exatamente o mesmo que a declaração if.
E se for verdade,
então faremos algo chamado executar e depois
voltar à condição, mudança de condição.
Se não tiver, voltamos.
Portanto, certifique-se de tomar precauções sempre que usar loops while
porque eles podem causar muitos problemas.
Você pode acabar em um loop sem fim onde
a condição não muda e seu Unity falhará.
Confie em mim, isso acontece e acontece comigo
o tempo todo sempre que estou usando loops while.
Portanto, certifique-se de saber o problema.
Certifique-se de sempre alterar
a condição e sempre sair do loop while.
De qualquer forma, com isso dito,
vamos voltar para Unity.
E aqui, quero dizer Visual Studio.
E o que vamos fazer aqui?
Vamos dizer que, enquanto o nível para ir para
um é igual ao gerenciador de cena,
ponto, ficar ativo, visto índice de pontos.
Então vamos seguir em frente e criar
um número aleatório aleatório que é
igual a um intervalo de pontos aleatório de 0 ou, na verdade, de um.
O que estamos usando um?
Bem, porque sabemos que a cena no índice
0 não é algo para o qual gostaríamos de ir.
Deixe-me mostrar o que quero dizer.
Se eu voltar para o Arquivo,
BuildSettings, o primeiro como tela de título,
a nova arma espiga e tudo
está disponível, exceto o 0,
que, e o, obviamente, o último.
Então, aqui, o aleatório começaremos em um.
Então, de um para o gerenciador de cenas,
a contagem de cenas em Configurações de compilação.
E você pode ver aqui, esse é o número
de cenas e as configurações de compilação.
E vamos reduzi-lo em um,
porque obviamente não queremos o último lá dentro.
Então, agora que temos um número aleatório de nossas cenas,
vou apenas ir em frente e imprimir esse número aleatório.
Então imprima e digamos que o espaço para o número aleatório,
número aleatório é e a primeira rodada.
E então aqui vamos definir o nível para
ir um para ser igual a rant.
Ok, então o que está acontecendo aqui?
Primeiro de tudo, dizemos que, embora o nível a
seguir seja igual ao índice de compilação atual,
então vamos inserir o loop while,
número aleatório escolhido atribuído
o número aleatório escolhido atribuído ao nível para ir se ainda for o mesmo,
e, em seguida, verifique a condição aqui.
Se ainda for o mesmo, então,
novamente, criaremos
outro número aleatório e o atribuiremos ao nível a seguir.
E continuaremos fazendo isso.
Enquanto o nível para ir 1 é igual ao
gerenciador de cena ou ao índice de compilação
da cena que está ativa no momento.
Uma vez que não seja, uma vez que essa condição não seja mais atendida,
continuaremos a definir as coisas.
Antes de continuarmos.
Obviamente, precisamos fazer algo que esteja definido o nível
para ir um para ser igual ao gerenciador de cena.
A cópia justa deste.
Então, estamos apenas enviando no
início como este só para que possamos
entrar no loop e depois continuar.
Então, vamos salvar isso.
Vamos voltar ao nosso ganho e nós na verdade.
Ainda não temos isso.
Então, para chamar isso,
onde deveríamos chamá-lo?
Acredito que isso seja parte do seu desafio.
Bem, acho que será parte do seu desafio.
Então, infelizmente, não poderemos testá-lo.
Mas, ou você sabe o que,
vamos testá-lo.
Então, se eu for para onde você pensa se quiser,
você pode fazer disso um desafio.
Mas, infelizmente, eu já mostrei a você.
Então, aqui, quando dissemos a depuração,
todas as ondas estão completas.
Vamos apenas manter isso,
remover o comum porque agora podemos
realmente ir em frente e acessar o gerenciador de níveis.
E acredito que seja uma instância.
E acessaremos o seletor de níveis.
E agora podemos realmente escolher um nível e também devemos
garantir que as ondas estejam completas.
E também precisamos ter certeza de que
as ondas estão completas.
Então, como vamos fazer isso?
Isso é algo que deveríamos ter
feito antes, mas não se preocupe.
Vamos criar uma variável privada
aqui e as ondas são concluídas.
E vamos defini-lo como falso no início.
Então privadas, oh, desculpe, ondas booleanas completas.
E onde definimos isso como verdadeiro?
Aqui embaixo depois de todas as ondas estarem completas.
Então as ondas completas são iguais a verdadeiras.
E onde isso afeta tudo?
Bem, aqui em cima, se olharmos
onde estamos gerando toda vez.
Então, vou recuar isso usando a guia.
E eu vou dizer se as ondas ainda não estão
completas, então, certo?
As ondas completas ainda não estão completas.
Então, se este ainda é falso,
o que não deve ser falso até que nos transformemos
em verdade aqui.
Então, como isso o mantém assim, acredito que
isso funcionará,
mas você sabe, vou adicionar
as duas linhas rabugas,
garantir que tudo esteja configurado corretamente.
Então, agora, uma vez que destruímos ou terminamos todas as ondas,
o Waves completo está pronto.
Não estamos mais em contagem regressiva e escolhemos um nível.
Então, vamos tentar ver como isso parece em nosso jogo.
Então, corremos.
E acredito que devemos remover
o justo para torná-lo mais rápido.
Então, vou atirar nos inimigos algumas vezes.
Aguarde a segunda onda,
que são os olhos covardes.
Vou atirar nos olhos voadores covardes.
E lá vamos nós.
E ainda temos um aqui.
Então, uma vez que o matamos,
temos o número aleatório três.
E vamos abrir o console e pausar o jogo.
Então, se olharmos no console,
temos o número aleatório é três.
Então, obviamente, isso funciona pela primeira vez.
Vamos ver qual é o índice de compilação 40s,
Kelly é, seus dois.
Então, três é o nível de chefe.
Então, escolhemos outro nível.
Excelente.
Eu realmente quero que você veja
o número aleatório sendo escolhido várias vezes,
mas não se preocupe, teremos muitas
oportunidades para essas coisas.
Vou remover este
aqui e a depuração aqui,
porque já sabemos que tudo
está funcionando perfeitamente bem.
Mas, obviamente, ainda há
o segundo nível que queremos definir.
Então, vou emitir isso para você como um desafio.
E seu desafio é definir o nível para ir,
para que ele seja planejado.
Então, depois de definir o primeiro nível para ir,
precisamos definir o segundo.
E o segundo deve ser
diferente do primeiro nível.
E o primeiro nível para ir
e o que estamos atualmente.
Então, você precisará se certificar de inicializá-lo.
E vou te dar uma dica porque
queremos ter certeza de que é diferente da
primeira e
diferente daquela em que estamos atualmente.
Você precisará usar o OR
para que a condição while pare.
E ainda não mostrei o mar,
então vou mostrá-lo para você aqui.
Se você quiser, talvez, eu não sei,
tirar uma captura de tela ou talvez voltar
e ver todos os passos do desafio.
Agora vou mostrar a
da verdade e a tabela da verdade.
Então, vamos começar com o fim.
Então, o fim é uma tabela de verdade.
Como isso funciona?
Se tivermos várias condições,
como eu disse agora,
precisamos ter certeza de que é diferente do
nível atual e
diferente do primeiro que definimos.
Portanto, tem que ser um loop while que verifica
o uso de tudo, enquanto o nível
dois que vamos definir é
igual a amor e quer ir ou nível dois para ir,
então precisaremos mudá-lo.
Ele precisa ser diferente de ambos.
Então deixe-me mostrar como funciona a verdadeira,
a tabela da verdade.
Se você tem dois verdadeiros, nós obtemos um verdadeiro.
Se tivermos um falso e um verdadeiro, obtemos um falso.
Se tivermos um falso e um falso, obtemos um falso,
temos um verdadeiro e um falso,
obtemos um falso.
Mas quando se trata do OR,
você verá que se tivermos um falso e um verdadeiro, então.
A resposta será verdadeira,
mas se ambos forem falsos,
a resposta será falsa.
Então, com essa informação,
sei que é um pouco confuso agora, quando realmente temos
a solução para o desafio,
vou explicar tudo, mesmo que
este vídeo esteja ficando muito longo,
mas não se preocupe com isso.
Pause o vídeo agora mesmo e faça o desafio.
Certo, bem-vindo de volta.
Como você se deu bem com isso?
Então, no gerente de nível,
sei que esse é um dos desafios mais difíceis,
mas estamos no Desafio Avançado.
Então aqui vou dizer que o selvagem e o nível 2,
opa, o nível para ir é igual ao nível para ir um.
Ou como são essas duas colunas, ou
o nível para ir é igual ao
índice de pontos do gerenciador de cena.
Então, o atual.
Então aqui vamos seguir em frente
e fazer exatamente a mesma coisa.
Copie isso, opa.
Cole-o aqui.
E o número aleatório 1, opa, desculpe.
Agora, número 1 aleatório e número dois aleatório.
E o nível para ir é igual a aleatório 2.
E na Índia, vamos salvar que o nível para ir é igual à
instância de ponto do gerenciador de cena.
Ou podemos dizer esse nível para ir para
igual ao nível para ir um.
Mas você sabe, eu não quero arriscar que
apenas mantenha as coisas seguras.
Mas, opa, cole-o aqui,
salve o que está acontecendo agora.
Portanto, há um problema porque
não podemos usar o nível de saída para,
precisamos definir o nível para salvar isso.
Então, o que está acontecendo aqui?
Definimos o nível para ir, para
ser exatamente como
o gerenciador de cena ou o índice na cena atual.
E aqui nós verificamos qual é
a condição aqui, como dissemos,
se voltarmos à nossa tabela de verdade,
vamos mantê-la aqui e vamos
ver como tudo está olhando.
Então, começamos verificando como nível para ir para igual dois,
nível para ir um.
E, atualmente, o nível para ir
ou nível sólido para ir um
será diferente do gerenciador de cena atual.
Portanto, essa condição é falsa, o que é bom.
Isso significa que não entraremos no loop while.
Mas, então, verificamos o nível para ir,
é igual ao índice de compilação atual?
É.
Então temos uma condição verdadeira que está bem aqui,
e uma condição falsa que está bem aqui.
Então, se olharmos na tabela da verdade,
temos uma condição verdadeira com uma condição falsa,
isso significa que todo o conjunto de condições é verdadeiro.
Isso significa que voltamos para o loop while,
e é exatamente isso que queremos.
Se tivermos 11 desses verdadeiros,
queremos voltar e criar
outro número aleatório e definir o número aleatório novamente.
E continuaremos fazendo isso até que
essa condição seja falsa.
E essa condição é falsa,
porque apenas duas condições falsas
tornam um total falso.
Então, de volta aqui, se o nível
diferente do nível para ir um,
e é diferente do atual.
Só então, quando ambos são falsos,
toda a condição é falsa e continuamos.
Então, vamos voltar aqui.
Vamos imprimi-los e executar
o jogo e deixar você saber o que,
vamos remover 11 gerente que removeu um
dos caras assustadores.
E vamos remover este também e executar
o jogo porque queremos demonstrar isso muito rápido.
Então, o inimigo aparecerá em
um pouco para que tenhamos
apenas um esqueleto para esqueletos, na verdade,
uma vez que os matamos, devemos ver isso.
Lá vamos nós. Então nós os chamamos,
vamos ao console,
pausamos o vídeo, pausamos o jogo.
Quero dizer, e você pode ver que nós os executamos.
número 1 é 3,
o número aleatório 2 é 4.
Ambos são diferentes.
Escolhemos níveis, certifique-se de confirmar suas alterações
e verei você na próxima.