Read this manual in English

Компонент Label

Компонент Label визуализирует фрагмент текста на экране в игровом пространстве. По умолчанию он упорядочивается и отрисовывается вместе со всей графикой спрайтов и тайлов. Компонент имеет набор свойств, определяющих способ визуализации текста. В Defold GUI поддерживает текст, но размещение элементов GUI в пространстве игры может оказаться сложной задачей. Текстовые метки эту задачу облегчают.

Создание текстовой метки

Чтобы создать компонент Label, кликните ПКМ на игровом объекте и выберите Add Component ▸ Label.

Add label

(Если необходимо создать несколько текстовых меток из одного шаблона, лучше создать новый файл компонента Label: кликните ПКМ в папке в браузере Assets и выберите New... ▸ Label, затем добавьте этот файл в качестве компонента к любым игровым объектам.)

New label

В свойстве Font укажите необходимый шрифт и убедитесь, что в свойстве Material установлен материал, соответствующий типу шрифта:

Font and material

Свойства текстовой метки

Помимо свойств Id, Position, Rotation и Scale существуют следующие специфичные для компонента свойства:

Text
Текстовое содержимое метки.
Size
Размер ограничивающей рамки текста. Если опция Line Break включена, ширина задает границу прерывания текста.
Color
Цвет текста.
Outline
Цвет обводки.
Shadow
Цвет тени.

Следует отметить, что в материале по умолчанию рендеринг теней отключен по соображениям производительности.

Leading
Коэффициент масштаба для межстрочного интервала. Значение 0 отменяет межстрочный интервал. По умолчанию 1.
Tracking
Коэффициент масштаба для межбуквенного интервала. По умолчанию 0.
Pivot
Опорная точка. Используется при изменении способа выравнивания текста (см. ниже).
Blend Mode
Режим наложения, используемый при рендеринге текстовой метки.
Line Break
Выравнивание текста происходит в соответствии с настройками опорной точки (пивота), а включение данной опции позволяет тексту перетекать в несколько строк. Ширина компонента определяет, в каком месте текст будет разрываться. Следует учитывать, что в тексте должен быть пробел, чтобы он мог прерываться.
Font
Ресурс шрифта, используемый для этой метки.
Material
Материал, используемый для рендеринга этой метки. Убедитесь, что выбран материал, созданный для используемого типа шрифта (bitmap, Distance Field или BMFont).

Режимы наложения

Свойство Blend Mode определяет, как графика компонента должна смешиваться с графикой, расположенной позади. Ниже представлены доступные режимы наложения и способы их вычисления:

Alpha
Нормальное смешивание: src.a * src.rgb + (1 - src.a) * dst.rgb
Add
Осветляет фон цветовыми значениями соответствующих пикселей компонента: src.rgb + dst.rgb
Multiply
Затемняет фон значениями соответствующих пикселей компонента: src.rgb * dst.rgb

Опорная точка и выравнивание

Настроив свойство Pivot, можно изменять режим выравнивания текста.

Center
Если пивот установлен в значение Center, North или South, текст выравнивается по центру.
Left
Если пивот установлен в какой-либо режим West, текст выравнивается по левому краю.
Right
Если пивот установлен в какой-либо режим East, текст выравнивается по правому краю.

Text alignment

Манипулирование при выполнении

Текстовыми метками можно манипулировать во время выполнения, получая и устанавливая текст метки, а также изменяя другие свойства.

color
Цвет метки (vector4)
outline
Цвет обводки (vector4)
shadow
Цвет тени (vector4)
scale
Масштаб метки, либо number для равномерного масштабирования, либо vector3 для масштабирования индивидуально по каждой из осей.
size
Размер метки (vector3)
function init(self)
    -- Задать текст компоненту "my_label" в том же игровом объекте,
    -- что и этот скрипт.
    label.set_text("#my_label", "New text")
end
function init(self)
    -- Задать цвет компоненту "my_label" в том же игровом объекте,
    -- что и этот скрипт. Цвет представляется значением RGBA, хранящимся как тип vector4.
    local grey = vmath.vector4(0.5, 0.5, 0.5, 1.0)
    go.set("#my_label", "color", grey)

    -- ...и убрать обводку, установив ее альфу в 0...
    go.set("#my_label", "outline.w", 0)

    -- ...и увеличить масштаб в два раза по оси X.
    local scale_x = go.get("#my_label", "scale.x")
    go.set("#my_label", "scale.x", scale_x * 2)
end

Конфигурация проекта

В файле game.project имеются несколько проектных настроек, относящихся к текстовым меткам.