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
Компонент Sprite — это простое изображение или мултикадровая анимация, отображаемая на экране.
Спрайт может брать графику либо из атласа, либо из источника тайлов.
Помимо свойств Id, Position и Rotation существуют следующие специфические свойства компонента:
Image
. В противном случае каждая ячейка называется в соответствии с именем текстурного семплера в материале.
Каждая ячейка указывает ресурс атласа или источника тайлов, используемый для отображения спрайта на соответствующем семплере.Automatic
, редактор автоматически задаст размер спрайта. Если установлено значение Manual
, вы можете задать размер самостоятельно.В графических интерфейсах часто встречаются элементы, чувствительные к контексту в отношении их размера: панели и диалоговые окна, размер которых необходимо изменять, чтобы вместить содержащееся в них содержимое. Это может вызвать визуальные проблемы, если применять текстурирование к изменяемой в размерах ноде.
Обычно движок масштабирует текстуру, чтобы она соответствовала границам ноды Box, но, определив краевые области Slice9, можно определить границы того, какие части текстуры должны масштабироваться:
Нода Box Slice9 включает в себя 4 числа, которые определяют количество пикселей для левого, верхнего, правого и нижнего полей, которые не должны подвергаться регулярному масштабированию:
Поля устанавливаются по часовой стрелке, начиная с левого края:
Описанное выше масштабирование текстуры Slice9 применяется только при изменении размера ноды Box:
Если вы изменяете параметр масштабирования (scale) у ноды Box или спрайта (или у игрового объекта) — нода, спрайт и текстура масштабируются без применения параметров Slice9.
При использовании Slice9-текстурирования со спрайтами параметр Sprite Trim Mode изображения должен быть установлен в значение Off.
Из-за особенностей работы mipmapping в рендерере масштабирование сегментов текстуры может вызывать артефакты. Это происходит при уменьшении масштаба сегментов ниже исходного размера текстуры. В этом случае рендерер выбирает mipmap более низкого разрешения для сегмента, что приводит к визуальным артефактам.
Чтобы избежать этой проблемы, убедитесь, что сегменты текстуры, которые будут масштабироваться, достаточно малы, чтобы их не приходилось уменьшать, а только увеличивать.
Свойство Blend Mode определяет, как графика компонента должна смешиваться с графикой, расположенной позади. Ниже представлены доступные режимы наложения и способы их вычисления:
src.a * src.rgb + (1 - src.a) * dst.rgb
src.rgb + dst.rgb
src.rgb * dst.rgb
src.rgb - dst.rgb * dst.rgb
Спрайтами можно манипулировать во время выполнения с помощью ряда различных функций и свойств (обращайтесь к документации по API). Функции:
sprite.play_flipbook()
— воспроизводит анимации в спрайте.sprite.set_hflip()
и sprite.set_vflip()
— задает горизонтальное и вертикальное переворачивание в анимации спрайта.Спрайт также имеет ряд различных свойств, которыми можно манипулировать с помощью go.get()
и go.set()
:
cursor
number
).image
hash
). Его можно изменить с помощью свойства атласа или источника тайлов и go.set()
. За примером обращайтесь к справочнику по API.material
hash
). Его можно изменить с помощью свойства материала и go.set()
. За примером обращайтесь к справочнику по API.playback_rate
number
).scale
vector3
).size
vector3
). Его можно изменить только если размер спрайта установлен в ручной режим (manual).The default sprite material has the following constants that can be changed using go.set() or go.animate() (refer to the Material manual for more details). Examples:
go.set("#sprite", "tint", vmath.vector4(1,0,0,1))
go.animate("#sprite", "tint", go.PLAYBACK_LOOP_PINGPONG, vmath.vector4(1,0,0,1), go.EASING_LINEAR, 2)
tint
vector4
). Для представления оттенка с компонентами x, y, z и w, соответствующими красному, зеленому, синему и альфа оттенкам, используется тип vector4
.Спрайт может переопределять вершинные атрибуты из текущего назначенного материала, которые передаются в вершинный шейдер от компонента (подробности см. в руководстве по материалам).
Атрибуты, указанные в материале, будут отображаться как обычные свойства в инспекторе и могут быть заданы для отдельных компонентов спрайтов. Если какой-либо из атрибутов переопределён, он будет отображён как переопределённое свойство и сохранён в файле спрайта на диске:
В файле game.project имеются несколько настроек проекта, относящихся к спрайтам.
При использовании спрайтом нескольких текстур есть несколько моментов, которые следует учитывать.
Данные анимации (fps, имена кадров) берутся из первой текстуры. Мы будем называть её “управляющей анимацией”.
Идентификаторы изображений управляющей анимации используются для поиска изображений в других текстурах. Поэтому важно, чтобы идентификаторы кадров совпадали между текстурами.
Например, если в вашем diffuse.atlas
есть анимация run
следующего вида:
run:
/main/images/hero_run_color_1.png
/main/images/hero_run_color_2.png
...
Тогда идентификаторы кадров будут run/hero_run_color_1
, что, скорее всего, не будет найдено, например, в normal.atlas
:
run:
/main/images/hero_run_normal_1.png
/main/images/hero_run_normal_2.png
...
Поэтому используйте Паттерны переименования
в атласе, чтобы переименовать их.
Установите _color=
и _normal=
в соответствующих атласах, и вы получите имена кадров следующего вида в обоих атласах:
run/hero_run_1
run/hero_run_2
...
UV координаты берутся из первой текстуры. Так как имеется только один набор вершин, нельзя гарантировать корректное совпадение, если вторичные текстуры имеют либо больше UV координат, либо другую форму.
Это важно учитывать, поэтому убедитесь, что изображения имеют достаточно схожую форму, иначе вы можете столкнуться с артефактами текстур.
Размеры изображений в каждой текстуре могут отличаться.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB