Manuals
Manuals




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

Свойства

Defold предоставляет для игровых объектов, компонентов и GUI-нод свойства, которые можно считывать, устанавливать и анимировать. Существуют следующие типы свойств:

  • Определенные системой трансформации игровых объектов (положение, вращение и масштаб) и специфические свойства компонентов (например, размер пикселя спрайта или масса объекта столкновения)
  • Определяемые пользователем скриптовые свойства, задаваемые в Lua-скриптах (подробнее в руководстве по свойствам скрипта)
  • Свойства GUI-нод
  • Шейдерные константы, определенные в шейдерах и файлах материалов (подробнее в руководстве по материалам)

В зависимости от того, где находится свойство, доступ к нему осуществляется через общую функцию или функцию, специфичную для данного свойства. Многие свойства могут быть автоматически анимированы. Анимация свойств с помощью встроенной системы настоятельно рекомендуется вместо самостоятельного манипулирования свойствами (внутри функции update()), как по соображениям производительности, так и ради удобства.

Составные свойства типа vector3, vector4 или quaternion также раскрывают свои субкомпоненты (x, y, z и w). К этим компонентам можно обращаться по отдельности, дополняя имя точкой (.) и именем компонента. Например, чтобы установить х-компонент позиции игрового объекта:

-- Установите позицию по x для "game_object" в значение 10.
go.set("game_object", "position.x", 10)

Функции go.get(), go.set() и go.animate() принимают в качестве первого параметра ссылку, а в качестве второго — идентификатор свойства. Ссылка идентифицирует игровой объект или компонент и может быть строкой, хэшем или URL. URL-адреса подробно описаны в руководстве по адрессации. Идентификатор свойства — это строка или хэш, дающий свойству имя:

-- Установите масштаб по X для спрайта
local url = msg.url("#sprite")
local prop = hash("scale.x")
go.set(url, prop, 2.0)

Для GUI-нод сама нода передаётся первым параметром либо специализированной функции свойства, либо универсальным функциям gui.get() и gui.set():

-- Получить цвет кнопки
local node = gui.get_node("button")
local color = gui.get_color(node)
local same_color = gui.get(node, "color")
gui.set(node, "color.x", 1)

Свойства игровых объектов и компонентов

Все игровые объекты и некоторые типы компонентов имеют свойства, которые можно считывать и манипулировать ими во время выполнения. Считывать эти значения можно с помощью go.get(), а записывать — с помощью go.set(). В зависимости от типа значения свойства, значения можно анимировать с помощью go.animate(). Небольшой набор свойств доступен только для чтения.

get
С помощью go.get() можно считывать.
get+set
С помощью go.get() можно считывать, записывать — с помощью go.set(). Числовые значения можно анимировать с помощью go.animate().

СВОЙСТВА ИГРОВОГО ОБЪЕКТА

Свойство Описание Тип  
position Локальная позиция игрового объекта vector3 get+set
rotation Локальное вращение игрового объекта, выраженное в виде quaternion quaternion get+set
euler Локальное вращение игрового объекта в углах Эйлера vector3 get+set
scale Локальное неоднородное масштабирование игрового объекта, выраженное в виде вектора, каждый компонент которого содержит множитель по соответствующей оси. Чтобы удвоить размер по осям X и Y, не изменяя Z, используйте vmath.vector3(2.0, 2.0, 1.0). vector3 get+set
scale.xy Локальное неоднородное масштабирование игрового объекта по осям X и Y. Используйте это свойство или go.set_scale_xy(), если масштабирование по Z не требуется. vector3 get+set

Существуют также специальные функции для работы с преобразованием игрового объекта: go.get_position(), go.set_position(), go.get_rotation(), go.set_rotation(), go.get_scale(), go.set_scale() и go.set_scale_xy().

СВОЙСТВА КОМПОНЕНТА SPRITE

свойство описание тип  
size Немасштабированный размер спрайта — его размер, взятый из исходного атласа. vector3 get
image Хэш пути к текстуре спрайта. hash get
scale Неравномерный масштаб спрайта. vector3 get+set
scale.xy Неравномерный масштаб спрайта вдоль осей X и Y. vector3 get+set
material Материал, используемый спрайтом. hash get+set
cursor Положение (от 0 до 1) курсора воспроизведения. number get+set
playback_rate Частота кадров анимации flipbook. number get+set

СВОЙСТВА КОМПОНЕНТА COLLISION OBJECT

Свойство Описание Тип  
mass Масса объекта столкновения number get
linear_velocity Текущая линейная скорость объекта столкновения vector3 get
angular_velocity Текущая угловая скорость объекта столкновения vector3 get
linear_damping Линейное затухание объекта столкновения vector3 get+set
angular_damping Угловое затухание объекта столкновения vector3 get+set

СВОЙСТВА КОМПОНЕНТА MODEL (3D)

Свойство Описание Тип  
animation Текущая анимация. hash get
texture0texture15 Хэши путей текстур модели. hash get+set
cursor Позиция (между 0–1) курсора воспроизведения number get+set
playback_rate Скорость воспроизведения анимации. Множитель к скорости воспроизведения анимации number get+set
material Материал, используемый моделью. hash get+set

СВОЙСТВА КОМПОНЕНТА LABEL

Свойство Описание Тип  
scale Масштаб метки vector3 get+set
scale.xy Масштаб надписи (label) вдоль осей X и Y. vector3 get+set
color Цвет метки vector4 get+set
outline Цвет контура метки vector4 get+set
shadow Цвет тени метки vector4 get+set
size Размер метки. Размер будет ограничивать текст, если включен перенос строки vector3 get+set
material Материал, используемый меткой. hash get+set
font Шрифт, используемый меткой. hash get+set

Свойства GUI-ноды

Для свойств GUI-нод существуют специализированные функции чтения и записи, например gui.get_position() и gui.set_position(). Перечисленные ниже встроенные свойства также можно читать и изменять универсальными функциями gui.get(node, property) и gui.set(node, property, value). Для других значений ноды всё ещё могут требоваться специализированные функции. Константы материала GUI-нод также используют универсальные функции. Чтобы обратиться к отдельному компоненту векторного свойства, добавьте его имя, например gui.set(node, "color.x", 1).

Универсальные и специализированные функции не всегда используют одинаковые типы значений. Для полных свойств position, scale, size и euler функция gui.get() возвращает vector4, а соответствующие специализированные функции — vector3. gui.set() принимает для этих свойств и vector3, и vector4. Универсальное свойство rotation использует кватернион; для задания вращения в градусах используйте euler.

  • position (или gui.PROP_POSITION)
  • rotation (или gui.PROP_ROTATION)
  • euler (или gui.PROP_EULER)
  • scale (или gui.PROP_SCALE)
  • color (или gui.PROP_COLOR)
  • outline (или gui.PROP_OUTLINE)
  • shadow (или gui.PROP_SHADOW)
  • size (или gui.PROP_SIZE)
  • fill_angle (или gui.PROP_FILL_ANGLE)
  • inner_radius (или gui.PROP_INNER_RADIUS)
  • leading (или gui.PROP_LEADING)
  • tracking (или gui.PROP_TRACKING)
  • slice9 (или gui.PROP_SLICE9)

Следует отметить, что все значения цвета кодируются в vector4, компоненты которого соответствуют значениям RGBA:

x
Компонент красного цвета
y
Компонент зеленого цвета
z
Компонент синего цвета
w
Компонент прозрачности (alpha)

СВОЙСТВА GUI-НОД

Свойство Описание Тип  
color Цвет грани ноды vector4 gui.get_color() gui.set_color()
outline Цвет контура ноды vector4 gui.get_outline() gui.set_outline()
position Положение ноды vector3 gui.get_position() gui.set_position()
rotation Вращение ноды. Функция чтения возвращает кватернион; функция записи принимает кватернион или углы Эйлера в виде вектора. quaternion, vector3 или vector4 gui.get_rotation() gui.set_rotation()
euler Вращение ноды в углах Эйлера, выраженных в градусах. vector3 gui.get_euler() gui.set_euler()
scale Масштаб ноды, выраженный в виде множителя по каждой оси vector3 gui.get_scale() gui.set_scale()
shadow Цвет тени ноды vector4 gui.get_shadow() gui.set_shadow()
size Немасштабируемый размер ноды vector3 gui.get_size() gui.set_size()
fill_angle Угол заливки ноды Pie, выраженный в градусах против часовой стрелки number gui.get_fill_angle() gui.set_fill_angle()
inner_radius Внутренний радиус ноды Pie number gui.get_inner_radius() gui.set_inner_radius()
leading Масштаб межстрочного интервала текстовой ноды. number gui.get_leading() gui.set_leading()
tracking Масштаб межбуквенного интервала текстовой ноды. number gui.get_tracking() gui.set_tracking()
slice9 Расстояния от краёв ноды Slice 9. vector4 gui.get_slice9() gui.set_slice9()