Bem-vindo de volta Meus desenvolvedores de jogos favoritos
para o último vídeo e este
vamos corrigir todos
esses pequenos detalhes relacionados à exibição da interface do usuário,
relacionados ao Bitcoin vindo de nível para
nível e todos as outras coisas divertidas.
Então, não vamos perder mais tempo e vamos começar.
Oh, ok, então agora precisamos resolver
o problema de nossos inimigos não encontrarem o jogador.
Também queremos ter certeza de que
temos o gerenciador de jogos como
um padrão singleton porque obviamente queremos manter
nossos bitcoins indo de nível para nível.
Então, para isso, vou lançar um desafio,
e seu desafio é encontrar
o jogador e encontrá-lo.
Então, antes de tudo,
certifique-se de que os inimigos continuem
procurando o jogador até encontrá-los.
Portanto, isso precisará ser um loop while
dentro da atualização e
do controlador inimigo. É um pequeno ele.
Queremos manter nossos Bitcoins de cena em cena.
Então, faça do gerenciador de jogos
um padrão único como fizemos com a camada.
Certifique-se de fazer o mesmo pelo gerenciador de jogos.
Ele aparece na hierarquia e o residente destrói?
Então lembre-se quando fizemos a camada do aplicativo Aidan destruir,
ela apareceu na hierarquia sob uma determinada guia,
que é feita onDestroy.
O gerenciador de jogos também aparecerá?
Então teste porque precisamos ter certeza de que
o gerenciador de jogos não é filho dos gerentes.
Então, a única maneira de garantir que ele
não seja destruído é garantir
que ele não seja um filho de
objetos do jogo gerentes tão bem que a informação.
Pause o vídeo agora mesmo e faça isso sozinho.
Oh, ok, bem-vindo de volta.
Então, primeiro
vamos entrar no controlador inimigo.
Vamos rolar para cima para atualizar e atualizar aqui.
Vou verificar se, enquanto
o jogador a perseguir é igual a nulo,
vamos seguir em frente e fazer com que o jogador persiga
ou defina dipolar para perseguir para encontrar objetos do tipo.
Objeto cinco, desculpe.
E vai ser o controlador do jogador.
E vai ser
v dot transform porque declarado para perseguir,
como lembramos, é um transporte.
Então, acessamos a transformação depois de refinado
o objeto que tem o controle do jogador nele.
Então isso deve funcionar,
mas enquanto estivermos aqui,
vamos para onde está o gerenciador de jogos?
Role para cima a instância.
E aqui vou encontrar o controlador do jogador.
E ele joga agora, ok,
então controlador do jogador, está bem aqui.
Vou copiar exatamente o
mesmo código e
colá-lo aqui e remover essa instância.
Salve isso. Então agora temos um padrão singleton.
Verificamos se há uma instância, nós a destruímos.
Se a instância for diferente de nula,
destruímos e definimos uma nova instância.
Nós salvamos tudo isso.
Vamos voltar ao nosso jogo
e vamos ver o que precisamos fazer aqui.
Então, a primeira coisa que precisamos fazer é
abrir o gerenciador de jogos aqui,
e precisamos remover o gerenciador de jogos daqui.
Não, não me permitirá que vejamos no pré-fabricado
se eu já tiver os gerentes de ganho.
Então Gerente, o gerenciador de jogos.
Então, vou abrir os gerentes
e vou remover o gerenciador de jogos.
Então, isso removerá o gerenciador de jogos
de todas as outras cenas.
E vou me certificar de que só tenho
o gerenciador de jogos aqui.
Então, nenhum outro gerente,
um, desculpe por isso.
Precisamos do gerenciador de jogos apenas na cena.
Então agora temos o gerenciador de jogos,
temos 0, mas moedas.
Vamos salvar tudo isso.
Faça isso um pouco maior.
Vamos executá-lo novamente.
E vamos ver o que acontece.
Então pegamos a arma,
tornamos um pouco moedas,
somos atingidos uma vez.
Vamos para o próximo nível.
Vamos ver, vamos para o próximo nível.
E lá vamos nós, Estamos no novo nível e podemos
ver que, por algum motivo,
temos os inimigos seguindo?
Não, eles não estão seguindo.
Há algo errado.
E como você pode ver, obviamente os bitcoins
e a saúde não foram atualizados.
E isso porque se olharmos para o jogador,
se olharmos para o não destruir o gerenciador de jogos,
os Bitcoins também não foram.
Então, se olharmos para o jogador,
você notará que a saúde dele é 490,
mas não está sendo enviada aqui.
Por quê? Como só atualizamos,
deixe-me ver e o gerente de saúde do jogador,
só atualizamos a saúde do jogador quando
somos atingidos e não quando realmente começamos.
Então, precisaremos corrigir isso também.
Mas antes de fazermos isso,
há algo que não está
certo com o MS.
Então, vou pausar o jogo aqui
e vamos ver qual é o problema.
Então você pode ver que cada um de
nossos inimigos não está sendo capaz de nos encontrar.
Então, vou clicar duas vezes.
E o problema é com o jogador Chase aqui.
Então, vamos ver o que vamos fazer sobre isso.
Oh, ok, então passei por
algumas coisas e finalmente encontrei a solução.
Então o problema aqui foi,
e é muito simples,
só precisamos mover
isso enquanto loop aqui sobre tudo isso.
E podemos querer
extrair isso em algum tipo de método.
Então, vou chamar esse método
encontrar o jogador ou certificar-me de que temos o jogador.
Então, por que o movemos para cá?
Bem, porque se tentarmos chamar
o movimento em direção, salve isso.
Então, o que é todo o problema em todo o problema e
a coisa toda que está causando isso é quando vamos
para um novo nível antes da camada,
que é a que não é destruída,
chega ao próximo nível.
Os inimigos já têm um alvo,
que era o jogador anterior.
Então, uma vez que o destruímos,
não conseguimos mais encontrá-lo.
Então, se tentarmos isso,
digamos que os queríamos para o novo nível,
temos todos os jogadores perseguição definida
aqui no início e depois o destruímos.
E então tentamos perseguir
o jogador ou avançar em direção ao jogador,
e é daí que o erro estava vindo.
Então, aqui estamos tentando perseguir o jogador.
E uma vez que haja um erro aqui,
nada sob isso funciona.
A atualização pára, tudo pára.
É por isso que precisamos ter o jogador achador.
A primeira coisa que fazemos uma atualização antes de continuarmos,
enquanto talvez precisemos
da declaração if aqui, acredito,
mas vamos mantê-la também,
caso demore um pouco de cinco.
Então, com isso fora do caminho,
se agora executarmos o jogo,
devemos ver isso quando vamos para o próximo nível.
Lá vamos nós, não temos erros.
Abrimos isso e lá vamos nós.
Os inimigos covardes estão
fugindo e estão atirando.
Então, o que isso fora do caminho,
próxima coisa que precisamos fazer é obviamente que
precisamos atualizar a interface do usuário do player.
Então, vou entrar no UI Manager.
Paramos o jogo. Sim, nós fizemos.
De volta ao UI Manager.
Aqui vou criar um método que será a
interface do usuário da camada de atualização anulada pública.
E vamos fazer algumas coisas aqui.
Então, a primeira coisa que vamos fazer é
criar um manipulador de saúde do jogador.
saúde da camada profunda é colorida,
e será igual a nula.
E você verá o porquê daqui a pouco,
porque vamos criar
um loop while que verificará a saúde do jogador.
E, embora seja nulo,
continuaremos procurando que a
saúde do jogador seja igual para encontrar objetos do tipo.
E será o manipulador de saúde da camada.
E assim que encontrarmos isso,
podemos sair do loop while.
E então aqui vamos seguir em
frente e, em primeiro lugar
obter o valor máximo do ponto de controle deslizante de saúde.
E será igual ao ponto de saúde do jogador
obter o valor máximo.
Então, obviamente, precisamos criar algum tipo de maneira de
acessar o máximo no manipulador de saúde do jogador.
O que temos qualquer ano, Ok,
então eles são campo serializado.
Vamos seguir em frente e criar um público e
obter a vida máxima da camada.
E vamos devolver o V-max.
Não tenho.
Já temos um desses.
Não, nós não temos.
Vamos seguir em frente e criar a boa camada,
saúde atual também, desde que estejamos aqui.
Então, a saúde atual e o que mais precisamos daqui?
Talvez precisemos do ,
não, acho que é tudo o que precisamos.
Então, agora podemos obter o máximo de saúde.
E então precisaremos definir o
valor do ponto do controle deslizante de saúde para ser igual ao
ponto de saúde da camada obter a saúde atual. Salve isso.
O que mais precisamos fazer?
Também precisamos encontrar uma maneira de atualizar nosso texto.
Então eu vou dizer o, como se chamava?
O texto Health, foi chamado de etapa da tecnologia de saúde?
Lá vamos nós, e é público também.
Ótimo.
Então role aqui para baixo.
Assim, o texto de ponto flexionado de saúde
e saúde será igual ao ponto de saúde do jogador ficar atualizado.
A saúde atual.
E é mais a barra.
E foi o máximo de saúde.
Então o ponto de saúde do jogador GetMax self.
Lá vamos nós. Então, tudo está pronto,
mas vou fazer algo aqui.
E isso mesmo, um log de pontos de depuração.
E eu só quero acompanhar os mesmos atos Saúde.
E deixe-me pegar este.
E isso fará sentido em apenas um pouco.
Então chateado este aqui.
E você verá o porquê daqui a pouco.
Então, vou salvar tudo isso.
Vou voltar para a Unity.
Vou executar o jogo.
Vou escolher o apartamento se torna os Bitcoins.
Seja atingido.
Por favor, pegue. Certo, então lá vamos nós.
Percorra o mundo,
passe pelo portal, vá para o próximo nível,
e você pode ver que está 100 aqui,
mesmo que se eu pressionar a camada, seja para 90.
Então, qual você acha que é o problema?
Só vou te dar alguns
segundos para pensar sobre isso.
O problema era e eu vou te dizer qual é o problema.
Primeiro de tudo, precisamos atualizar a saúde do jogador.
Então atualize a integridade da camada ou a interface do usuário do player.
Agora vamos em frente e testá-lo.
Talvez você tenha visto no depurador.
Acabei de notar que nem os chamamos de métodos.
Então lá vai você. A depuração funciona,
vou conseguir.
Vá pela larva,
vá pelo portal.
E qual é a saúde?
Portanto, a vida máxima é 50 e a saúde atual é 0.
Qual você acha que é o problema?
Bem, o problema é
como dissemos no vídeo anterior,
já tínhamos um jogador na
cena e esse jogador foi destruído.
Então, uma vez que quisermos definir essa barra da casa e o imposto,
eles estão sendo definidos com base no jogador antigo.
Então, para definir o novo jogador,
o que você acha que devemos fazer?
Embora existam muitas soluções para esse problema,
mas descobri que a melhor é ter apenas
uma maneira simples de converter isso
de uma voz pública para uma arte pública e numerador.
E então vamos dar retorno.
Novo. Aguarde quatro segundos.
E vamos esperar 0,1 e
será o momento enquanto,
não se esqueça, temos uma imagem desmaiada
que desligamos apenas
por acelerar o processo de teste.
Então, agora o que acontecerá é que esperaremos 0,1
segundos e durante esse tempo
o jogador mais velho será destruído,
o novo jogador será encontrado
e iremos imediatamente receber nossa atualização.
Então, aqui, em vez de reprodutor de atualizações,
vou iniciar uma co-rotina,
que será a integridade da camada de atualização que você.
Eu salvo isso de volta em nosso jogo.
Nós executamos o jogo. Nós conseguimos.
Saímos, passamos por este, e lá vamos nós.
Podemos ver que nossa saúde foi
atualizada e é muito perfeita.
Então lá vamos nós,
podemos ver que tudo está funcionando perfeitamente bem.
E antes de tudo, também temos os Bitcoins,
então precisamos consertar isso também aqui.
E o que também queremos fazer é ter certeza
de que geramos na posição correta.
Então, atualmente, responda ao lado do portal,
que não é útil.
Nosso objetivo é chegar a
esse portal e não apenas aparecer lá.
Então eu vou,
antes de tudo aqui,
vamos ver o que precisamos fazer.
Então, precisamos fazer, temos o texto Bitcoin,
os efeitos BTC. Lá vamos nós.
Então, texto BTC, o texto é igual a encontrar ou não,
temos o gerenciador de jogos, o on instance.
Obter, mas contínuo. Vamos,
acredito que este devolve
os bitcoins todos sabem disso como Bitcoin.
Então, se eu for ao gerenciador de jogos para ter,
obtenha Bitcoin atual, para que eu
possa obter Bitcoin atual, salve isso.
E isso deve estar funcionando, exceto porque não é
porque você não pode converter implicitamente
o tipo e duas strings.
Então, as duas cordas,
isso converte qualquer corda de reprodução, salve isso.
Vamos testar isso um pouco do jogo.
E agora pegamos uma moeda e vamos para o próximo nível.
Ok, então agora devemos ver
que temos aqui dez, lá vamos nós.
Leva tempo, mas não será perceptível,
especialmente quando tivermos a imagem do destino,
mas agora precisamos gerar o jogador em um determinado momento.
Então, vou entrar no
gerente de nível e vou fazer
isso no gerente de nível.
E vou rolar para baixo aqui.
E vou criar um novo método.
Então, aqui, vamos criar
um novo método que é um vazio público e sua camada spot e
player de ponto e entrada no ponto,
vamos obter a instância de ponto do controlador do jogador,
ponto não instanciar, ponto dançar,
tocar um controlador de bala.
Ok, então instância do controlador de camada.
E vamos usar a
posição de transformação de pontos
e ela será igual a algum tipo
de ponto de geração, a posição.
E agora vou copiar isso e
criar um campo serializado aqui.
Da transformação e será o ponto de desova.
Role para baixo e veja como isso parece. Sim, lá vamos nós.
Então, o que acontece aqui é que colocamos o jogador no
ponto desde o início.
Por onde ele começa?
Aqui vamos colocar o ponto da camada.
Nós salvamos tudo isso.
E o que acontece aqui é assim
que o gerente de nível começa,
lembre-se de que não é um destruidor de toneladas,
não é um único combate na posição de ponto da instância de ponto do controlador do jogador
é
colocada imediatamente no ponto local.
Então, de volta aqui,
já temos esses pontos de palma.
Somos pontos de desova 1.
Então, vou criar um novo aqui e ele vai
ser camada na geração.
E onde está e a cena.
Vamos ver, e vai ser aqui.
Poupe isso se formos para outro nível,
podemos realmente ir em frente e substituir isso.
Então, no gerente, substitua
e você pode escolher o que deseja substituir?
Tenha em mente que não queremos
substituir os pontos de geração porque
para cada nível
haverá um ponto de geração diferente.
Então, vou aplicar substituir
o gerenciador de níveis do gerenciador pré-fabricado,
talvez também aplique o gerente de preferência de substituição.
Lá vamos nós.
E aqui o jogador gera pontos.
Vamos em frente e
também aplicar o pré-fabricado ao todo preferir.
Certo, ótimo. Portanto, certifique-se de não se inscrever.
Tudo, salve tudo isso.
E agora vou executar o jogo.
Vou entrar em um novo nível.
E nós deveríamos. Não, não o fizemos.
Isso porque nós, oh, ok.
Certo. Certo.
Então o problema está aqui e 11 gerente,
qual é o problema aqui?
Se rolarmos até eles,
geramos o ponto e o gerenciador de níveis.
Qual parece ser o problema?
Além disso, lá vamos nós, está aqui.
Precisamos configurá-lo. E agora precisamos ir para
os gerentes de nível e aplicar as alterações ao.
Então, agora, quando corremos,
devemos ver se vamos para o próximo nível.
Não, ainda não está funcionando.
Então, qual é o problema?
A variável não foi atribuída.
Então eu acho que há algo que não está rapidamente definido aqui.
Portanto, aplique ao gerenciador de níveis pré-fabricados.
E qual mais é o problema?
Então eu acho que no outro nível,
o ponto de desova não está sendo definido corretamente.
Então, estou tentando aplicar as alterações.
Talvez desta vez funcione.
Não, ainda não acontece porque se formos
para o gerente de nível do gerente,
ponto de geração do jogador no gerente de nível,
ele nem está definido.
Então, o que você acha de um problema aqui é,
eu acho que cometemos algum tipo de erro
porque tudo aqui foi redefinido.
Então você pode ver aqui que estes não estão sendo definidos.
Então, vou aplicar tudo por enquanto.
Esta não é a melhor ideia,
mas não vamos nos preocupar com isso por enquanto.
Vou para o próximo nível e me certificar de que
finalmente surgirmos no ponto certo.
Mas agora também teremos desova.
E aqui, como você pode ver,
mas não queremos isso porque
cada nível terá seus próprios inimigos,
terá seus próprios níveis, desculpe,
ondas e assim por diante e assim por diante.
Mas, como você pode ver, tudo funciona.
O único problema ainda em nosso jogo é
o fato de que quando vamos até a porta,
isso aparece pela primeira vez e quando o abrimos,
quando vamos embora,
não vai.
Quero dizer, as palavras não aparecem
novamente e a porta não fecha novamente.
Por quê? Porque na sala
que você criou e isso foi um erro por mim.
Desligamos a porta.
Então, desligamos a porta,
mas a exibição de texto está sempre na porta.
Então vou deixar isso como um desafio final para você.
Faça fora do reino das pontuações.
Tudo o que você precisa fazer é
remover esse texto exibido da
porta e colocá-lo no portal aqui,
e depois movê-lo aqui.
Então o Canvas precisará ser derrubado na porta,
ele terá que estar no portal e você precisará
ligar e desligar a porta com base no texto,
haverá algumas alterações no código.
Mas acho que neste momento,
você se tornou um desenvolvedor de jogos tão bom em um nível tão alto,
com todos os vídeos longos
e longos que eu te ensinei.
Espero que você tenha gostado deste vídeo.
Espero que você tenha gostado desse curso inteiro.
Espero que você tenha aprendido muito.
Espero que você aproveite a jornada e o processo.
E espero que você não tenha ficado muito zangado quando cometi erros.
Espero que você esteja gostando
da transparência que estou lhe mostrando.
E se você ainda não,
é claro, me deixou um comentário,
certifique-se de se juntar à discórdia
e eu te vejo
talvez não no próximo vídeo porque este,
este é o último.
Talvez algum dia no futuro,
vamos manter contato.
Não se preocupe com isso. Muito obrigado por assistir.
Adeus.