For the complete documentation index, see llms.txt. This page is also available as Markdown.

Texto da UI

Escreva texto em entities de UI.

Adicione texto à sua UI criando um Label entity.

Um Label entity tem os seguintes campos que podem ser configurados:

  • value: A string a ser exibida

  • fontSize: O tamanho do texto, como um número.

    NOTA: O fontSize não é afetado pelo tamanho da sua entity ou das parent entities.

  • color: A cor do texto, como um Color4.

  • font: A fonte a ser usada. Os valores suportados são:

    • 'serif'

    • 'sans-serif' (padrão)

    • 'monospace'

  • textAlign: Como o texto se alinhará com o seu pai. Ele recebe um valor do TextAlignType type. TextAlignType = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'middle-center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';

  • textWrap: Define se o texto usa quebras de linha para evitar exceder a largura máxima. Ele vem ativado por padrão ('wrap'), para desativá-lo, passe o valor 'nowrap'.

Um Label entity também pode ter outros componentes comuns encontrados em outros tipos de UI entities, como uiTransform e uiBackground.

arquivo ui.tsx:

import { UiEntity, Label, ReactEcs } from '@dcl/sdk/react-ecs'
import { Color4 } from '@dcl/sdk/math'

export const uiMenu = () => (
	<UiEntity uiTransform={{ width: 'auto', height: 'auto' }}>
		<Label
			value="This is a label"
			color={Color4.Red()}
			fontSize={29}
			font="sans-serif"
			textAlign="top-left"
		/>
	</UiEntity>
)

arquivo index.ts:

Se uma linha de texto for longa demais para caber na largura atribuída, ou na largura máxima do seu container, o texto continuará na linha seguinte. Você pode desativar isso alterando o valor da textWrap propriedade para 'nowrap'.

Você também pode forçar uma quebra de linha adicionando explicitamente \n à string.

Se nenhuma height ou width estiver definida no uiTransform container, o container usará o valor auto, que se ajusta para caber em todo o texto. Você pode definir um maxWidth e um maxHeight para garantir que ele não exceda certos limites. Você também pode usar minWidth e minHeight para garantir que o container não fique pequeno demais, mesmo se o texto for mais curto.

Tamanho responsivo do texto

Use a scaleFontSize() função para fornecer valores de fonte que se ajustam ao tamanho da tela do jogador. Ao definir a fontSize propriedade de uma entity de UI de texto, passe esta função em vez de um único número.

A scaleFontSize() função requer dois parâmetros:

  • fontSize: O tamanho base da fonte a ser usado.

  • scaleUnit (opcional): O fator de escala. Isso determina se o texto deve ser ajustado com base na largura ou na altura da tela, e um multiplicador para o quanto adaptar. Padrão: 0.39 (um número, então ele é interpretado como relativo a width). Os valores podem ser:

    • Number: Um número simples; neste caso, ele é interpretado como relativo a width

    • String terminando em vw: Isso torna o número relativo à largura da view. Por exemplo "0.8vw"

    • String terminando em vh: Isso torna o número relativo à altura da view. Por exemplo "0.8vh"

💡 Dica: Esta função funciona de forma semelhante à CSS calc() função.

O valor de scaleUnit é uma porcentagem da largura ou altura da janela. Portanto, um scaleUnit de "100vw" é 100% da largura da tela, um valor de "0.5vw" é 0,5% da largura da tela.

A fórmula que scaleFontSize() segue multiplica a largura ou altura da tela por scaleUnit, e adiciona a isso o fontSize passado no primeiro parâmetro.

Por exemplo, no snippet abaixo usa um scaleUnit valor de 0,8. Se a largura da tela for 1280px, isso resultará em um texto com tamanho de 25.24, seguindo a equação 15 + (1280 * 0.8 / 100).

💡 Dica: Se você não tiver diferentes tamanhos de tela para testar, pode tentar usar o Web Explorer e redimensionar a janela em que você executa o preview. O texto se ajustará instantaneamente toda vez que você alterar a janela.

Como alternativa a scaleFontSize(), passe uma vw/vh string diretamente como o fontSize — por exemplo fontSize: '1.8vh' — que dimensiona o texto em relação ao canvas e ignora completamente o fator de escala da UI. Não não multiplique tamanhos de fonte por um fator que você calcula por conta própria a partir de UiCanvasInformation: o SDK já aplica um, veja Tamanho responsivo da UI.

Atualizado