< Return to Video

2D Roguelike 5 of 14 : Game Manager

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

more » « less
Video Language:
English
Duration:
07:31

Portuguese, Brazilian subtitles

Revisions