This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Um componente Label renderiza um trecho de texto na tela, no espaço do jogo. Por padrão, ele é ordenado e desenhado junto com todos os gráficos de sprite e tiles. O componente tem um conjunto de propriedades que controla como o texto é renderizado. A GUI do Defold oferece suporte a texto, mas pode ser trabalhoso posicionar elementos GUI no mundo do jogo. Labels facilitam isso.
Para criar um componente Label, clique com o botão direito no objeto de jogo e selecione Adicionar Componente ▸ Rótulo.

(Se quiser instanciar vários labels a partir do mesmo template, você também pode criar um novo arquivo de componente label: clique com o botão direito em uma pasta no navegador Conteúdo e selecione Novo... ▸ Rótulo, depois adicione o arquivo como componente a qualquer objeto de jogo)

Defina a propriedade Font para a fonte que deseja usar e certifique-se de definir a propriedade Material para um material que corresponda ao tipo de fonte:

Para usar uma fonte Vector, siga a configuração de fontes vetoriais, atribua o recurso .font à propriedade Font do Label e defina o Material do Label como /builtins/fonts/label-vector.material. Use Font Size para controlar o tamanho exibido.
Para emojis coloridos, conclua também a configuração do fallback COLRv1 e de inclusão no bundle. O exemplo abaixo pressupõe um Label com o id label e um script no mesmo objeto de jogo. Deixe Text do Label vazio para exibir a saudação somente depois que seus glifos estiverem prontos:
function init(self)
local text = "Hello 😀 🍎 🚀"
local font_resource = go.get("#label", "font")
-- Adicione o fallback uma única vez para este recurso de fonte compartilhado.
font.add_font(font_resource, "/fonts/NotoColorEmoji-Regular.ttf")
font.prewarm_text(font_resource, text, function(self, request_id, result, err)
if result then
go.set("#label", "text", text)
else
print("Could not prepare label text:", err)
end
end)
end
As letras comuns usam a fonte original, e os emojis usam a fonte colorida adicionada. Se outros Labels ou nós de texto de GUI compartilham esse recurso de fonte, inicialize o fallback em um só lugar e reutilize-o.
Além das propriedades Id, Position, Rotation e Scale, existem as seguintes propriedades específicas do componente:
Observe que o material padrão tem a renderização de sombra desativada por motivos de desempenho.
A propriedade Blend Mode define como os gráficos do componente devem ser mesclados com os gráficos atrás dele. Estes são os modos de mesclagem disponíveis e como eles são calculados:
Alpha
:: Mesclagem normal: src.a * src.rgb + (1 - src.a) * dst.rgb
Add
:: Clareia o fundo com os valores de cor dos pixels correspondentes do componente: src.rgb + dst.rgb
Multiply
:: Escurece o fundo com os valores dos pixels correspondentes do componente: src.rgb * dst.rgb
Screen
:: O oposto de Multiply. Clareia o fundo e os valores dos pixels correspondentes do componente: src.rgb - dst.rgb * dst.rgb
Ao definir a propriedade Pivot, você pode alterar o modo de alinhamento do texto.
Center, North ou South, o texto será centralizado.West, o texto será alinhado à esquerda.East, o texto será alinhado à direita.
Você pode manipular labels em tempo de execução obtendo e definindo o texto do label, bem como várias outras propriedades.
textstring). Disponível por meio de go.get() e go.set().colorvector4)outlinevector4)shadowvector4)scalenumber para escala uniforme ou um vector3 para escala individual ao longo de cada eixo.sizevector3)function init(self)
-- Defina o texto do componente "my_label" no mesmo objeto de jogo
-- deste script.
go.set("#my_label", "text", "New text")
local text = go.get("#my_label", "text")
print(text) -- New text
end
label.set_text() e label.get_text() estão obsoletos em favor da propriedade text. As funções antigas continuam disponíveis para compatibilidade. O setter antigo enfileira uma mensagem, enquanto go.set() atualiza o texto imediatamente.
function init(self)
-- Define a cor do componente "my_label" no mesmo objeto de jogo
-- que este script. A cor é um valor RGBA armazenado em um vector4.
local grey = vmath.vector4(0.5, 0.5, 0.5, 1.0)
go.set("#my_label", "color", grey)
-- ...e remove o contorno, definindo seu alfa como 0...
go.set("#my_label", "outline.w", 0)
-- ...e escala 2x ao longo do eixo x.
local scale_x = go.get("#my_label", "scale.x")
go.set("#my_label", "scale.x", scale_x * 2)
end
O arquivo game.project tem algumas configurações do projeto relacionadas a labels.