Canvas e texto
Parte da seção Criando jogos de verdade do Journey de Unity da Coddy. Lição 1 de 56.
Unity desenha textos, botões e barras na tela com seu sistema de UI. No Unity 6, GameObject > UI > Text - TextMeshPro adiciona um objeto de texto chamado Text (TMP); na primeira vez, o Unity solicita a importação dos TMP Essentials, necessários para a fonte do texto. Se ainda não houver um Canvas na cena, o Unity cria um e coloca o texto dentro dele, além de um EventSystem, por onde passam os cliques na UI. O Canvas desenha seus filhos sobre a imagem da câmera, em uma posição fixa na tela, independentemente de para onde a câmera esteja apontando. Configure seu Canvas Scaler como Scale With Screen Size, 1920 x 1080, Match 0.5, como em todas as cenas deste curso, e o layout mantém suas proporções em qualquer tamanho de tela.
O componente do texto é TextMeshPro - Text (UI). Os scripts o armazenam em um campo do tipo base TMP_Text, do namespace TMPro, e alteram o que ele exibe por meio de sua propriedade text, que é uma string. Este script define o nome do nível quando ele começa:
using UnityEngine;
using TMPro;
public class LevelIntro : MonoBehaviour
{
public TMP_Text titleText;
void Start()
{
titleText.text = "World 2: Ice Caves";
}
}Arraste o objeto Text (TMP) da Hierarchy para o espaço Title Text no Inspector, e o Unity coloca o componente de texto no campo. Sem using TMPro;, o nome TMP_Text é desconhecido e o script não compila (CS0246). Se o espaço ficar vazio, o primeiro titleText.text lança UnassignedReferenceException. O que o script escreve substitui o texto de Text Input digitado no Inspector, que é New Text em um texto recém-criado.
Desafio
FácilO explorador caminha pela ilha usando as setas para a esquerda e para a direita, como Explorer.cs já faz. Mostre onde ele está em ZoneText, no topo da tela, que ainda exibe Novo Texto:
- Adicione
using TMPro;e um campo públicoTMP_TextchamadozoneText. A cena conecta ZoneText a um campo com esse nome exato. - A cada quadro, o texto exibe
Zone: Beachenquanto o x do explorador for menor que 2 eZone: Junglea partir de 2.
Pressione Jogar, caminhe até a grama e volte, depois pressione Verificar.
Experimente você mesmo
using UnityEngine;
public class Explorer : MonoBehaviour
{
public float speed = 4f;
void Update()
{
float move = Input.GetAxisRaw("Horizontal");
transform.Translate(move * speed * Time.deltaTime, 0f, 0f);
// Mostre a zona em ZoneText: Zone: Beach quando x for menor que 2, Zone: Jungle a partir de 2
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Criando jogos de verdade
1Texto na tela
Canvas e textoExiba a pontuaçãoFormate númerosUm cronômetro regressivoRevisão: velocímetro4Cenas e Fases
Carregar uma CenaReiniciar a FasePróxima FaseManter entre CenasRevisão: Seleção de Fases10Projeto: Jogo de Plataforma 3D
O PercursoPlataformas Móveis2Botões e telas
Botões e onClickLambdasConectando no InspectorPainéis ligados e desligadosBarras de vidaRevisão: Loja de melhorias5Salvando com PlayerPrefs
Salvar um númeroCarregar com um valor padrãoRecordeSalvar configuraçõesRevisão: Moedas no banco