-
Nesse vídeo vamos começar
-
a criar nosso GameManager para que possamos
-
testar o script BoardManager que acabamos de escrever.
-
Vamos selecionar nossos dois scripts e adicioná-los
-
ao game manager.
-
Em seguida vamos abrir o script game manager no MonoDevelop.
-
No GameManager vamos adicionar
-
uma variável pública do tipo BoardManager
-
chamada BoardScript.
-
Vamos também adicionar uma variável privada
-
do tipo int chamada Level e inicializá-la com 3.
-
Vamos usar três porque queremos testar
-
o nível 3, que é quando os inimigos aparecem.
-
Vamos mudar Start para Awake.
-
Na função Awake vamos fazer duas coisas.
-
Vamos buscar e armazenar uma referência para
-
o script BoardManager.
-
E vamos chamar a função InitGame.
-
Vamor criar InitGame.
-
Em InitGame vamos chamar a função SetupScene
-
de boardScript.
-
Quando fazemos isso vamos passar o
-
parâmetro level, dessa maneira podemos dizer a boardScript
-
qual o nível de dificuldade da fase
-
e assim determinar o número de inimigos.
-
Isto feito vamos salvar nosso script e retornar ao editor.
-
No editor agora vamos configurar
-
as variáveis do nosso script BoardManager.
-
Vamos selecionar o GameManager.
-
E agora vamos travar
-
o inspector pois assim
-
podemos clicar em múltiplos prefabs
-
e arrastá-los para dentro do nosso vetor.
-
Vamos travar o inspector clicando no botão de lock aqui em cima.
-
E agora vamos começar arrastando
-
a saída primeiro.
-
Em seguida vamos fazer um shift-click
-
para selecionar todos os oito prefabs de tiles do chão
-
e vamos arrastá-los diretamente
-
no vetor de tiles do chão.
-
Isso nos vai permitir acrescentá-los todos de uma vez
-
sem perder o foco da janela.
-
Em seguida vamos acrescentar os tiles das paredes.
-
Selecione Wall1, shift-click no Wall8.
-
Arraste-os até o vetor Wall Tiles.
-
Vamos fazer os tiles de comida, neste caso eu vou
-
clicar no prefab de comida e fazer um command-click
-
no prefab soda porque eu estou num Mac.
-
Se eu estivesse num PC eu teria feito um control-click
-
para adicioná-lo a lista.
-
Vamos arrastá-los para o vetor Food Tiles.
-
Vamos selecionar os dois tiles de inimigos.
-
E finalmente o tile da parede externa.
-
Depois de fazer isso vamos destravar o inspector,
-
e testar.
-
Ótimo, como vocês podem ver
-
nossa fase foi criada,
-
podemos ver que a câmera está um pouco fora de posição,
-
então vamos ajustar isso rapidamente.
-
Vamos configurar o X para 3,5 e o Y para 3,5.
-
Vamos também configurar a cor de fundo para preto.
-
Com isto feito vamos executar a cena
-
e testar.
-
Aí está,
-
nossa saída, nosso piso,
-
comidas sendo criadas,
-
paredes internas e externas sendo criadas,
-
e os inimigos sendo criados também.
-
Vamos acrescentar algumas funcionalidades ao nosso script GameManager.
-
Vamos tornar nosso GameManager um singleton.
-
Um singleton é um objeto que deve ter
-
somente uma instância no jogo
-
a qualquer momento.
-
Já que o GameManager vai executar tarefas como
-
carregar fases e controlar o placar,
-
não queremos que mais do que um desses
-
objetos exista,
-
então no nosso código vamos garantir
-
que isso não seja possível.
-
Vamos abrir o GameManager no MonoDevelop.
-
Para configurar nosso GameManager como um singleton
-
vamos adicionar uma variável public static
-
do tipo GameManager chamada Instance
-
e inicializá-la como null.
-
Declarar instâncias como public significa
-
que ela é acessível mesmo de fora da classe.
-
Declarando-a como static significa que a variável vai pertencer
-
a classe em si, ao invés de pertencer
-
a uma instância da classe.
-
Isso significa que agora podemos acessar as funções public
-
e variáveis do nosso game manager
-
desde qualquer script do nosso jogo.
-
Em Awake vamos checar se
-
instance é igual a null, e se for
-
vamos dar-lhe o valor this.
-
caso contrário, e caso a instancia não
-
seja igual a this nós vamos destruí-lo
-
a fim de evitar que acidentalmente tenhamos
-
duas instâncias de GameManager.
-
Vamos também configurar nosso GameManager
-
para DontDestroyOnLoad.
-
DontDestroyOnLoad signifnca que quando
-
carregamos uma cena nova, normalmente todos os
-
game objects da hierarquia são destruídos.
-
Como queremos usar o GameManager para
-
controlar o placar entre fases
-
não queremos que ele seja destruído quando uma fase for carregada.
-
E para isso usamos o DontDestroyOnLoad
-
para garantir que ele irá persistir entre fases.
-
Vamos salvar o script e retornar ao editor.
-
Agora que adicionamos os scripts que precisamos ao
-
GameManager, vamos arrastá-lo para
-
a pasta Prefabs para criar o prefab.
-
Antes de terminarmos precisamos criar mais um
-
script que irá carregar o
-
GameManager quando o jogo começa.
-
Vamos até Scripts e vamos criar
-
um novo script chamado Loader.
-
Loader é um script bastante simples que
-
apenas vai checar se GameManager foi
-
instanciado, e caso contrário
-
vai instanciar um baseado no prefab.
-
Vamos acrescentar uma variável public do tipo game object,
-
chamada GameManager.
-
Vamos mudar o Start para Awake.
-
Em Awake vamos checar se GameManager.Instance
-
é igual a null.
-
Aqui estamos usando a variável static que criamos
-
no script GameManager
-
e acessando a variável do script Loader.
-
Se for igual a null vamos instanciar
-
o prefab GameManager.
-
Podemos paragar a função Update, pois não vamos utilizá-la.
-
E isso é tudo que precisamos por enquanto.
-
No editor podemos apagar o GameManager da hierarquia.
-
E acrescentar o script Loader a main camera.
-
Com o script Loader adicionado vamos arrastar
-
o nosso prefab GameManager.
-
Agora podemos testar a cena.
-
Agora que o GameManager foi inicializado
-
e que nossas fases foram criadas
-
é hora de fazer os personagens se moverem.
-
No próximo video faremos um script
-
chamado MovingObject que faz isso.