Атрибуты скрипта: типы, редактирование в Editor, инициализация

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

Типы атрибутов

Атрибуты в PlayCanvas делятся на несколько типов, которые позволяют разработчикам добавлять различные параметры и свойства к скрипту. Эти атрибуты являются частями классов в PlayCanvas и могут быть использованы для различных целей.

1. Типы данных атрибутов

Каждый атрибут в PlayCanvas связан с определенным типом данных, который определяет, как атрибут будет работать:

  • Number — числовое значение. Может использоваться для любых числовых параметров, таких как скорость или размер.
  • String — строка. Используется для текстовых значений, таких как имена объектов или описание.
  • Boolean — логическое значение. Используется для параметров типа “истина/ложь”.
  • Vec2, Vec3, Vec4 — векторные типы данных для хранения 2D, 3D или 4D векторов, соответственно. Эти атрибуты часто используются для представления координат, направления или цветов.
  • Color — цвет, обычно представляемый в виде RGBA-значений.
  • Asset — ссылка на ресурс (например, текстуры или модели).
  • Entity — ссылка на объект сцены (Entity). Используется для связи объектов между собой.
  • Script — ссылается на другой скрипт в проекте, позволяя создавать зависимости между различными частями кода.

2. Методы для работы с атрибутами

Для работы с атрибутами используются специальные методы, которые позволяют взаимодействовать с ними программно. Например:

  • this.entity.script — доступ к скрипту, прикрепленному к текущему объекту.
  • this.app.assets — доступ к ассетам в проекте.
  • this.app.root.findByName() — позволяет найти объект по имени, что полезно при взаимодействии с другими сущностями в проекте.

Редактирование атрибутов в Editor

Редактор PlayCanvas предоставляет удобный интерфейс для работы с атрибутами, позволяя настраивать их визуально, без необходимости редактировать код напрямую. Это особенно полезно при разработке, когда нужно быстро тестировать различные значения параметров.

1. Настройка атрибутов через Inspector

Когда скрипт прикрепляется к объекту в редакторе PlayCanvas, его атрибуты становятся доступными через панель Inspector. Здесь можно настраивать значения атрибутов для каждой сущности, к которой прикреплен скрипт. Для этого необходимо:

  • Перейти на вкладку объекта в редакторе.
  • Найти скрипт в списке компонентов.
  • Редактировать значения атрибутов непосредственно в поле ввода рядом с соответствующим параметром.

Редактируемые атрибуты могут включать как стандартные значения, так и ссылки на другие объекты или ассеты. Например, если атрибут скрипта — это текстура, то в редакторе можно просто перетащить файл текстуры в соответствующее поле.

2. Редактирование через настройки скрипта

Для каждого атрибута в PlayCanvas можно задать дополнительные параметры через объект настройки, что позволяет изменять поведение атрибута в редакторе. Например:

MyScript.attributes.add('speed', {
    type: 'number',
    default: 10,
    min: 0,
    max: 100,
    title: 'Speed'
});

В данном примере:

  • type — тип атрибута (число).
  • default — значение по умолчанию.
  • min и max — минимальное и максимальное значения для атрибута.
  • title — отображаемое название атрибута в редакторе.

Кроме того, можно использовать такие параметры, как desc, чтобы добавить описание атрибута, или schema для более сложных структур данных.

Инициализация атрибутов

Инициализация атрибутов в PlayCanvas происходит в момент создания объекта скрипта. Эти атрибуты могут быть инициализированы значениями по умолчанию, которые можно потом изменить через редактор. Важно понимать, что атрибуты скриптов PlayCanvas действуют на протяжении всей жизни объекта и могут быть изменены как в коде, так и вручную через интерфейс.

1. Конструктор и методы инициализации

В PlayCanvas атрибуты скрипта могут быть инициализированы через конструктор объекта. Например:

var MyScript = pc.createScript('myScript');

MyScript.attributes.add('health', { type: 'number', default: 100 });
MyScript.attributes.add('playerName', { type: 'string', default: 'Player' });

При этом значение атрибута будет установлено сразу после создания скрипта и может быть изменено в редакторе или через код.

2. Инициализация через функции жизненного цикла

Кроме конструктора, можно использовать методы жизненного цикла для настройки значений атрибутов во время работы приложения. Один из часто используемых методов — это initialize, который вызывается при старте скрипта:

MyScript.prototype.initialize = function() {
    console.log('Игрок: ' + this.playerName + ', Здоровье: ' + this.health);
};

Также можно использовать метод postInitialize, который вызывается после завершения инициализации всех компонентов объекта.

Связь атрибутов с компонентами

Атрибуты скриптов часто используются для взаимодействия с компонентами объектов в PlayCanvas. Например, можно установить атрибут, который будет влиять на физическое поведение объекта, или менять его материал. Связь атрибутов с компонентами позволяет легко настраивать динамическое поведение в ответ на изменения в игровом процессе.

1. Пример использования атрибутов для управления материалами

MyScript.prototype.initialize = function() {
    var material = this.entity.model.material;
    if (this.health < 50) {
        material.diffuse = new pc.Color(1, 0, 0); // изменяем цвет на красный
        material.update();
    }
};

Здесь атрибут health контролирует цвет материала объекта, что позволяет создавать визуальные эффекты для здоровья игрока или других характеристик.

2. Пример работы с векторами

Атрибуты, такие как Vec3, позволяют задавать и изменять позиции объектов:

MyScript.prototype.initialize = function() {
    this.entity.setPosition(this.startPosition);
};

MyScript.attributes.add('startPosition', { type: 'vec3', default: new pc.Vec3(0, 0, 0) });

Этот код инициализирует атрибут startPosition для установки начальной позиции объекта в пространстве.

Итоги

Атрибуты в PlayCanvas — это мощный инструмент для создания гибких и динамичных скриптов. Использование различных типов данных и возможности редактирования через редактор позволяют значительно ускорить процесс разработки. Инициализация атрибутов может происходить как через код, так и через интерфейс редактора, что дает разработчику гибкость в настройке и тестировании параметров.