Canvas e texto
Parte da seção Criando Jogos de Verdade do Journey de Unity da Coddy. Lição 1 de 60.
O 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 pede para importar o TMP Essentials, necessário para a fonte do texto. Se a cena ainda não tiver um Canvas, 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 um local fixo da tela, onde quer que a câmera esteja apontada. Configure o 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 de seu tipo base TMP_Text, do namespace TMPro, e alteram o que ele exibe por meio de sua propriedade text, 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 campo Title Text no Inspector, e o Unity coloca o componente de texto dele no campo. Sem using TMPro;, o nome TMP_Text é desconhecido e o script não compila (CS0246). Se o campo ficar vazio, a primeira ocorrência de titleText.text gera uma UnassignedReferenceException. O que o script escreve substitui o texto inserido em Text Input no Inspector, que em um texto recém-criado é New Text.
Desafio
FácilMostre em qual zona o explorador está, em ZoneText, na parte superior.
- Em
Explorer.cs, adicioneusing TMPro;e o campopublic TMP_Text zoneText;. A cena vincula ZoneText a esse nome. - Em
Update(), abaixo do comentário, definazoneText.textcomoZone: Beachenquantotransform.position.xfor menor que2e comoZone: Junglecaso contrário.
Pressione “Jogar” e caminhe para a direita até a grama: o texto muda para Jungle. 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 para x menor que 2, Zone: Jungle a partir de 2
}
}
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ímetro2Botõ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 bancoPratique por conta própria: Playground de Unity