Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

Mostre em qual zona o explorador está, em ZoneText, na parte superior.

  1. Em Explorer.cs, adicione using TMPro; e o campo public TMP_Text zoneText;. A cena vincula ZoneText a esse nome.
  2. Em Update(), abaixo do comentário, defina zoneText.text como Zone: Beach enquanto transform.position.x for menor que 2 e como Zone: Jungle caso 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

Pratique por conta própria: Playground de Unity