Com o novo projeto aberto, renomeie a scene, Sample Scene para Game.

Adicione uma nova cena (Scene) e nomeie como Menu.

Mude a resolução do jogo para Full HD (1920 X 1080). Na aba GAME da Unity.

Interface gráfica do usuário, Aplicativo

O conteúdo gerado por IA pode estar incorreto.

Abra a cena Menu (duplo clique na cena Menu).

Na Hierarquia da cena Menu, adicione o item Canvas. Botão direito na hierarquia🡪 UI 🡪 Canvas.

Configurando o Canvas:

Tela de computador com jogo

O conteúdo gerado por IA pode estar incorreto.

Selecione o GameObject Canvas.

  • Modifique as configurações do Canvas no Inspector:
  • Render Mode: Screen Space- Camera
  • Render Camera : Main Camera (Camera do jogo).
  • Marque a opção Vertex.

Adicione os seguintes objetos dentro do Canvas (Botão direito 🡪 UI):

  • UI🡪 IMAGE
  • UI🡪 Panel

Adicione os seguintes objetos dentro do Panel (Botão direito encima do Panel 🡪UI):

  • UI🡪Image
  • UI🡪Button
  • UI🡪Button
  • UI🡪Button

Ficará parecido com a imagem abaixo :

Interface gráfica do usuário

O conteúdo gerado por IA pode estar incorreto.

Dando nome as coisas!

  • Image (do Canvas) 🡪 Fundo
  • Panel 🡪 SelecionarPersonagem
  • Image (do Panel) 🡪 Personagem
  • Button 🡪 Proximo
  • Button 🡪 Anterior
  • Button 🡪 Selecionar

Interface gráfica do usuário, Texto

O conteúdo gerado por IA pode estar incorreto. Interface gráfica do usuário, Texto, Aplicativo, chat ou mensagem de texto

O conteúdo gerado por IA pode estar incorreto.

Organizando o Layout e adicionando os Sprites.

  • Adicione os Sprites ao seu projeto na Unity:
  • Localize a pasta dos sprites na pasta pública.
  • Arraste a pasta para dentro da pasta ASSETS de seu projeto.

Interface gráfica do usuário, Aplicativo

O conteúdo gerado por IA pode estar incorreto.

Configurando os objetos do Canvas

Interface gráfica do usuário, Gráfico

O conteúdo gerado por IA pode estar incorreto.

Selecione o Objeto Fundo

No componente Image, altere a propriedade Source Image.

  • O sprite que iremos usar está na pasta Assets/Sprites/UI/BG

Altere o tamanho da image:

  • Width= 1920 e Height=1080

OK, Selecione o Objeto Panel SelecionarPersonagem Tela de um aparelho eletrônico

O conteúdo gerado por IA pode estar incorreto.

Selecione o Objeto SelecionarPersonagem

No componente Image, altere a propriedade Color.

Altere a transparência, deixe transparente.

Observe a imagem.

Configurando os Botões e Image do SelecionarPersonagem

  • Personagem:
    • Width=300 e Height=300
  • Botão Proximo:
    • Pos X = 420 Pos Y=0 Pos Z = 0
    •  Width = 200 Height=200
    • Source Image = 47.png
  • Botão Anterior:
    • Pos X = -420 Pos Y=0 Pos Z = 0
    • Width = 200 Height=200
    • Source Image = 47.png
  • Botão Selecionar:
    • Pos X = 0 Pos Y= -300 Pos Z = 0
    • Width = 200 Height=200
    • Source Image = 38.png

Tela de computador com luz azul O conteúdo gerado por IA pode estar incorreto.

GameManager

Este objeto irá gerenciar grande parte do nosso jogo.

  • Crie um GameObject em branco (Empty)
  • Nomeie como GameManager

Crie uma pasta chamada Scripts dentro de Assets.

  • Dentro da pasta Script crie uma pasta chamada Menu. A pasta Menu irá armazenar os scripts específicos da cena Menu.
  • Crie um script c# dentro da pasta Scripts chamado DadosUsuario.cs

Interface gráfica do usuário, Diagrama, Aplicativo

O conteúdo gerado por IA pode estar incorreto.

O script DadosUsuario.cs

Texto

O conteúdo gerado por IA pode estar incorreto.

Onde:

Interface gráfica do usuário, Texto, Aplicativo

O conteúdo gerado por IA pode estar incorreto.

Interface gráfica do usuário, Texto, Aplicativo

O conteúdo gerado por IA pode estar incorreto.

Texto

O conteúdo gerado por IA pode estar incorreto.

Interface gráfica do usuário, Texto, Aplicativo

O conteúdo gerado por IA pode estar incorreto.

Resumo do Funcionamento:

  1. Singleton Pattern: A classe DadosUsuario é implementada como um Singleton, garantindo que apenas uma instância dela exista durante a execução do jogo. Isso é útil para gerenciar dados globais, como o nome do personagem, que precisam persistir entre cenas.
  2. Persistência de Dados: O método DontDestroyOnLoad(gameObject) garante que o GameObject ao qual este script está anexado não seja destruído ao carregar uma nova cena, mantendo os dados armazenados na classe.
  3. Controle de Acesso: A propriedade nomePersonagem tem um get público e um set privado, o que significa que outras classes podem ler o valor, mas só podem modificá-lo através do método setNomePersonagem.

Atenção!!!!!

Anexe o Script DadosUsuario.cs no Objeto GameManager

Interface gráfica do usuário

O conteúdo gerado por IA pode estar incorreto.

Agora vamos criar O script para selecionar o Personagem.

Dentro da pasta Menu (Assets🡪 Menu), crie um script de nome SelecionarPersonagem.cs

Abra o script:

Texto

O conteúdo gerado por IA pode estar incorreto.

Onde:

Texto

O conteúdo gerado por IA pode estar incorreto.

  • using UnityEngine;: Importa as funcionalidades básicas do Unity.
  • using UnityEngine.UI;: Importa as funcionalidades relacionadas à interface do usuário (UI), como Image, Button, etc.
  • using UnityEngine.SceneManagement;: Importa as funcionalidades para gerenciar cenas, como carregar uma nova cena.

Tela de computador com texto preto sobre fundo branco

O conteúdo gerado por IA pode estar incorreto.

  1. public string[] nomePersonagem;
    • Um array de strings que armazena os nomes dos personagens disponíveis para seleção.
    • Cada índice deste array corresponde ao nome de um personagem.
  2. public Image imagemPersonagem;
    • Um componente de UI do tipo Image que exibe a imagem do personagem selecionado.
    • Este componente deve ser configurado no Inspector do Unity, arrastando um objeto de UI (como um Image) para este campo.
  3. public Sprite[] spritesPersonagens;
    • Um array de Sprite que armazena as imagens dos personagens.
    • Cada índice deste array corresponde à imagem de um personagem.
  4. int indice = 0;
    • Uma variável inteira que controla o índice atual das listas nomePersonagem e spritesPersonagens.
    • Inicializada com 0, o que significa que o primeiro personagem da lista será exibido por padrão.

Método atualizarImage

Tela de celular com letras

O conteúdo gerado por IA pode estar incorreto.

  • Este método atualiza a imagem exibida na UI (imagemPersonagem) com o sprite correspondente ao índice atual (indice).
  • É chamado sempre que o jogador avança ou retrocede na seleção de personagens.

Método proximoPersonagem

Texto

O conteúdo gerado por IA pode estar incorreto.

  1. indice++;
    • Incrementa o valor de indice para avançar para o próximo personagem.
  2. if (indice >= spritesPersonagens.Length):
    • Verifica se o índice ultrapassou o tamanho do array spritesPersonagens.
    • Se sim, significa que o jogador chegou ao final da lista e deve voltar ao primeiro personagem.
  3. indice = 0;
    • Reinicia o índice para 0, voltando ao primeiro personagem.
  4. atualizarImage();
    • Atualiza a imagem exibida na UI para refletir o novo personagem selecionado.

Método anteriorPersonagem

Texto

O conteúdo gerado por IA pode estar incorreto.

  1. indice–;:
    • Decrementa o valor de indice para retroceder ao personagem anterior.
  2. if (indice < 0):
    • Verifica se o índice é menor que 0.
    • Se sim, significa que o jogador está no primeiro personagem e deve ir para o último.
  3. indice = spritesPersonagens.Length – 1;
    • Define o índice para o último personagem da lista.
  4. atualizarImage();:
    • Atualiza a imagem exibida na UI para refletir o novo personagem selecionado.

Método confirmarPersonagem

Texto

O conteúdo gerado por IA pode estar incorreto.

  1. DadosUsuario.Instance.setNomePersonagem(nomePersonagem[indice]);:
    • Usa a instância da classe DadosUsuario (que deve ser um Singleton) para armazenar o nome do personagem selecionado.
    • O nome é obtido do array nomePersonagem usando o índice atual (indice).
  2. SceneManager.LoadScene(“Game”);
    • Carrega uma nova cena chamada “Game”.
    • Isso permite que o jogo prossiga para a próxima fase ou tela após a seleção do personagem.

Método Start

Texto

O conteúdo gerado por IA pode estar incorreto.

  1. indice = 0;:
    • Define o índice inicial como 0, garantindo que o primeiro personagem seja exibido ao iniciar o jogo.
  2. atualizarImage();:
    • Atualiza a imagem na UI para exibir o sprite do primeiro personagem.

Resumo do Funcionamento

  1. Inicialização:
    • Quando o jogo começa, o método Start é chamado, configurando o índice para 0 e exibindo a imagem do primeiro personagem.
  2. Navegação entre Personagens:
    • O jogador pode avançar ou retroceder na lista de personagens usando os métodos proximoPersonagem e anteriorPersonagem.
    • A imagem na UI é atualizada automaticamente para refletir a seleção atual.
  3. Confirmação da Seleção:
    • Quando o jogador confirma a seleção, o nome do personagem é armazenado na classe DadosUsuario (usando o padrão Singleton).
    • Em seguida, o jogo carrega uma nova cena chamada “Game”.

Como Usar no Unity

Anexe o Script, SelecionarPersonagem, no objeto Canvas na hierarchy.

Interface gráfica do usuário

O conteúdo gerado por IA pode estar incorreto.

Selecione o Canvas

Interface gráfica do usuário

O conteúdo gerado por IA pode estar incorreto.

  1. Configuração no Inspector:
    • Atribua os sprites dos personagens ao array spritesPersonagens.
    • Atribua os nomes dos personagens ao array nomePersonagem.
    • Arraste um objeto Personagem de UI (Image) para o campo imagemPersonagem.
  2. Botões de Navegação: Interface gráfica do usuário, Site

O conteúdo gerado por IA pode estar incorreto.
    • Nos Botões UI para “Próximo” e “Anterior” e vincule-os aos métodos proximoPersonagem e anteriorPersonagem.
  3. Botão de Confirmação:
    • No Botão “Selecionar” e vincule-o ao método confirmarPersonagem.

Organizando as Cenas

  1. Clique em File 🡪 Build Settings
  2. Abra a pasta Scenes
  3. Arraste as cenas para dentro de Scenes Build
  4. Ordene, utilizando o mouse, para que a primeira cena seja o Menu.

Interface gráfica do usuário

O conteúdo gerado por IA pode estar incorreto.

Salve o Projeto.

Cena Game

Adicione os Sprites dos personagens na cena, e renomeie de acordo com o nome correto dos personagens, da mesma forma que você nomeou na cena do Menu.

Interface gráfica do usuário

O conteúdo gerado por IA pode estar incorreto.

Crie uma Pasta chamada “Prefabs”, dentro de Assets.

Interface gráfica do usuário, Texto, Aplicativo

O conteúdo gerado por IA pode estar incorreto.

Arraste os Players (Guerreiro e Bruxo) para dentro da pasta Prefabs.

Os objetos irão mudar de cor, significando que são prefabs.

Interface gráfica do usuário

O conteúdo gerado por IA pode estar incorreto.

Delete os Players da Hierarchy, mantendo os objetos no Prefabs.

Crie um GameObject Empty e renomei como GameScene.

Crie uma Pasta chamada Game dentro da Pasta Scripts. Crie um script chamado GameScene.cs e anexe ao objeto GameScene.

Interface gráfica do usuário

O conteúdo gerado por IA pode estar incorreto.

O Script GameScene

Este script irá cuidar as ações globais dentro da cena game.

Vamos editar o Script:

Onde

1. Array de Prefabs (characterPrefabs):

  • public GameObject[] characterPrefabs;:
    • Este array armazena os prefabs dos personagens que podem ser instanciados na cena.
    • Cada prefab é um GameObject que representa um personagem jogável.
    • No Inspector do Unity, você pode atribuir os prefabs dos personagens a este array.

2. Método Start:

  • O método Start é chamado automaticamente pelo Unity quando a cena é carregada.
  • Ele é usado para inicializar lógica ou configurar objetos no início da cena.

3. Obtenção do Personagem Selecionado:

  • string selectedCharacter = DadosUsuario.Instance.nomePersonagem;:
    • Aqui, o script acessa a instância da classe DadosUsuario (que deve ser um Singleton) para obter o nome do personagem selecionado.
    • O nome do personagem foi armazenado anteriormente (Ne tela de Menu) e está sendo recuperado aqui.

4. Loop foreach:

  • foreach (var prefab in characterPrefabs):
    • O foreach é um loop que percorre cada elemento de um array ou lista.
    • Neste caso, ele itera sobre o array characterPrefabs, que contém os prefabs dos personagens.
    • A cada iteração, a variável prefab recebe o valor do elemento atual do array.

5. Verificação do Nome do Prefab:

  • if (prefab.name == selectedCharacter):
    • Dentro do loop, o script verifica se o nome do prefab atual (prefab.name) corresponde ao nome do personagem selecionado (selectedCharacter).
    • O name é uma propriedade de GameObject que retorna o nome do objeto no Unity.

6. Instanciação do Prefab:

  • Instantiate(prefab, transform.position, Quaternion.identity);:
    • O método Instantiate é usado para criar uma cópia de um GameObject (neste caso, o prefab do personagem) na cena.
    • Parâmetros:
      1. prefab: O prefab que será instanciado.
      2. transform.position: A posição onde o prefab será criado. Neste caso, a posição do objeto que contém este script.
      3. Quaternion.identity: A rotação do objeto. Quaternion.identity significa “sem rotação” (rotação padrão).

7. Uso do break:

  • break;:
    • O break é usado para sair do loop foreach assim que o personagem correto for encontrado e instanciado.
    • Isso evita percorrer o restante do array desnecessariamente.

Funcionamento Geral do Script

  1. Inicialização:
    • Quando a cena é carregada, o método Start é executado.
  2. Recuperação do Personagem Selecionado:
    • O script obtém o nome do personagem selecionado a partir da classe DadosUsuario.
  3. Busca e Instanciação do Prefab:
    • O script percorre o array characterPrefabs usando um loop foreach.
    • Para cada prefab, ele verifica se o nome corresponde ao personagem selecionado.
    • Quando o prefab correto é encontrado, ele é instanciado na cena usando o método Instantiate.
  4. Finalização:
    • O loop é interrompido com break após a instanciação do personagem.

Resumo

  • foreach: Usado para percorrer todos os elementos de um array ou lista.
  • Instantiate: Usado para criar uma cópia de um GameObject (prefab) na cena.
  • Funcionalidade do Script: Instancia o personagem selecionado pelo jogador na cena de jogo, com base no nome armazenado em DadosUsuario.

Uso no Unity

  1. Configuração no Inspector:
    • No Unity,Selecione o objeto GameScene, arraste os prefabs dos personagens para o array characterPrefabs no Inspector.
    • Certifique-se de que os nomes dos prefabs correspondam aos nomes armazenados em DadosUsuario.
  2. Cena de Seleção de Personagem:
    • Em uma cena anterior (por exemplo, uma tela de seleção de personagens), o jogador escolhe um personagem, e o nome é armazenado em DadosUsuario.
  3. Cena de Jogo:
    • Quando a cena de jogo é carregada, este script instancia o personagem selecionado na posição do objeto que contém o script.

Interface gráfica do usuário, Diagrama

O conteúdo gerado por IA pode estar incorreto.

Volte para a cena do Menu para realizar o teste.

Interface gráfica do usuário

O conteúdo gerado por IA pode estar incorreto.

Interface gráfica do usuário

O conteúdo gerado por IA pode estar incorreto.