PlayCanvas предоставляет разработчикам гибкость в работе с различными
типами элементов, которые могут быть использованы для создания
пользовательских интерфейсов (UI) или взаимодействий в 3D-сценах. Среди
этих элементов важными являются: image,
text и group. Каждый из этих типов
элементов имеет свои особенности и применяется в различных ситуациях в
зависимости от требований проекта.
Элемент image
Тип элемента image используется для отображения
изображений на экране. Это могут быть как простые картинки, так и
текстуры, применяемые к объектам в сценах.
Основные свойства:
- asset: текстура или изображение, которое будет
отображаться на элементе. С помощью этого свойства можно привязать
изображение из ассетов PlayCanvas.
- width и height: размеры
изображения на экране. Эти параметры могут быть заданы в пикселях, либо
через относительные величины (например, проценты).
- opacity: прозрачность изображения. Значение
варьируется от 0 (полностью прозрачное) до 1 (полностью
непрозрачное).
- uvRect: используется для настройки области
текстуры, которая будет отображаться. Это особенно полезно, если
текстура на изображении используется не полностью, а только её
часть.
Применение:
- Изображения в интерфейсах. Простой и быстрый способ отображения
иконок, фонов или графических элементов на экране.
- Текстуры для 3D-объектов. С помощью текстур можно улучшать внешний
вид объектов в сцены, добавляя детали поверхности.
- Динамические изображения. Изображение может быть обновлено в
реальном времени, например, при загрузке новых данных или переключении
состояния интерфейса.
Элемент text
Тип элемента text используется для отображения
текста на экране. Это один из самых часто применяемых элементов,
особенно в пользовательских интерфейсах, где необходимо вывести
информацию, подсказки, кнопки и другие текстовые элементы.
Основные свойства:
- text: строка текста, который будет отображаться на
экране.
- font: шрифт, который используется для отображения
текста. PlayCanvas позволяет использовать как стандартные шрифты, так и
кастомные, добавленные в ассеты.
- fontSize: размер шрифта в пикселях. Это свойство
влияет на визуальную читаемость текста.
- color: цвет текста. Цвет задается в формате rgba
(например, rgba(255, 0, 0, 1) — красный).
- lineHeight: высота строки текста, позволяющая
настроить интерлинияж.
- maxWidth: максимальная ширина блока, в пределах
которой будет отображаться текст. Если текст превышает эту ширину, он
будет автоматически обрезан или перенесен на следующую строку.
- textAlign: выравнивание текста (влево, вправо, по
центру).
Применение:
- Вывод статической и динамической информации в интерфейсе:
заголовков, описаний, подсказок.
- Кнопки, где текст используется в качестве метки действия.
- Сложные текстовые блоки, где необходимо форматировать текст
(например, создание диалоговых окон или сообщений).
Элемент group
Тип элемента group используется для объединения
нескольких других элементов в одном контейнере. Это особенно полезно,
когда требуется организовать группу UI-элементов, чтобы манипулировать
ими как с единой сущностью.
Основные свойства:
- children: массив элементов, которые являются
потомками группы. Эти элементы могут быть любых типов, включая
image, text, другие
group и т. д. С помощью этого свойства можно создать
структуру иерархии UI-элементов.
- position: положение всей группы на экране. Элементы
внутри группы будут перемещаться и изменяться относительно координат
группы.
- rotation: поворот всей группы относительно своей
оси. Это может быть полезно, например, для поворота панели с элементами
интерфейса.
- scale: масштаб всей группы. Позволяет изменять
размер группы элементов целиком.
Применение:
- Композиция UI: когда нужно собрать несколько элементов в единую
группу, чтобы с ними можно было работать как с одной сущностью
(например, панель с кнопками и текстом).
- Анимации и трансформации: при применении анимаций или изменений
положения, поворота или масштаба группе, все её элементы изменяются
одновременно.
- Контейнеры для сложных интерфейсов: например, создание выпадающих
меню или панелей инструментов, где каждый элемент внутри группы может
быть отдельным объектом, но управляется как единое целое.
Работа с элементами в
PlayCanvas
Все три типа элементов — image,
text и group — могут быть использованы
вместе для создания сложных пользовательских интерфейсов. В PlayCanvas
для работы с этими элементами используются различные методы и события,
которые позволяют взаимодействовать с элементами в реальном времени.
- Управление видимостью: через свойство
enabled можно скрывать или показывать элементы, что полезно
при динамическом изменении интерфейса.
- Обработчики событий: для каждого элемента можно
настроить обработку событий, таких как
click,
touchstart, mouseenter и другие. Это позволяет
создавать интерактивные интерфейсы, где пользователи могут
взаимодействовать с элементами.
- Анимации: элементы могут анимироваться с
использованием встроенных средств PlayCanvas или через JavaScript, чтобы
создавать плавные переходы или изменения состояний.
Примеры использования
- Простой UI с изображением и текстом:
var imageElement = new pc.Element(canvas, {
type: pc.ELEMENTTYPE_IMAGE,
asset: imageAsset,
width: 200,
height: 100
});
var textElement = new pc.Element(canvas, {
type: pc.ELEMENTTYPE_TEXT,
text: "Привет, мир!",
fontSize: 24,
color: new pc.Color(1, 1, 1)
});
var groupElement = new pc.Element(canvas, {
type: pc.ELEMENTTYPE_GROUP,
children: [imageElement, textElement],
position: new pc.Vec2(100, 100)
});
- Группа элементов с кнопкой и текстом:
var button = new pc.Element(canvas, {
type: pc.ELEMENTTYPE_TEXT,
text: "Нажми меня",
fontSize: 30,
color: new pc.Color(0, 0, 0)
});
var group = new pc.Element(canvas, {
type: pc.ELEMENTTYPE_GROUP,
children: [button],
position: new pc.Vec2(400, 300)
});
button.on('click', function () {
console.log('Кнопка нажата');
});
Заключение
Типы элементов image, text и
group играют ключевую роль в создании пользовательских
интерфейсов и взаимодействий в PlayCanvas. Они предоставляют
разработчикам широкие возможности для создания динамичных и
интерактивных приложений. Ключевыми аспектами являются гибкость в
настройке и возможности для анимаций, обработки событий и организации
сложных UI-структур.