Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

O 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úblico TMP_Text chamado zoneText. A cena conecta ZoneText a um campo com esse nome exato.
  • A cada quadro, o texto exibe Zone: Beach enquanto o x do explorador for menor que 2 e Zone: Jungle a 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
    }
}
quiz iconTeste seus conhecimentos

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