Scripting
Varwin SDK предназначен для создания контента для Varwin XRMS
Понятие контента включает в себя:
- шаблоны сцен (scene templates)
- объекты (objects)
Создание шаблонов сцен не предполагает программирования, даже наоборот, на сценах не может быть скриптов не из библиотеки Varwin SDK. Поэтому данная статья сосредотачивается на объяснении принципов работы Varwin объектов
Здесь и далее под объектом понимается Varwin объект
Для каждого объекта обязательны три класса:
- Основной класс объекта
ObjectName
- наследникVarwinObject
, базового класса для всех объектов Wrapper
- обертка над объектомVarwin Object Descriptor
- дескриптор объекта, хранит мета-данные объекта
Workflow
Краткое описание процесса создания объекта и основных особенностей Varwin XRMS и Varwin SDK
Varwin XRMS (Reality Management System) предназначена для пользователей-непрограммистов. Поэтому на юнити разработчика ложится задача реализации основной логики объектов и предоставление упрощенного интерфейса для конечного пользователя
Для наиболее часто используемой логики Varwin SDK предоставляет готовые компоненты
Более сложная логика должна быть реализована программистом
- Для реализации логики в классах отличных от
ObjectName
.asmdef-файл объекта должен ссылаться на эти классы Подробнее: Переиспользование компонентов. - Для корректной работы некоторых стандартных действий (например, детектирования коллизий) необходимо реализовывать определенные Varwin интерфейсы. Подобные моменты описаны в данным разделе документации
- Объект оборачивается во
Wrapper
- системный класс, представляющий объект в XRMS. С точки зрения кода, когда нужно общаться с другим объектом, на входе всегда имеется именно егоWrapper
- Программист билдит объект. Varwin SDK упаковывает созданный объект в файл с расширением .vwo
- Конечный пользователь импортирует файл объекта в Varwin XRMS, собирает сцену из готовых объектов и реализует простую логику с помощью предоставленных программистом интерфейсов в блокли
- Программист создает Varwin объект из простого game object-а. Объект превращается в префаб, а на корень объекта добавляются компоненты:
VarwinObjectDescriptor
Основной класс объекта
ObjectName
- наследник классаVarwinObject
(генерируется автоматически)
- В XRMS для пользователя доступна система визуального программирования blockly
- Некоторые из блоков входят в стандартную библиотеку или создаются автоматически для всех объектов
- Однако программист может предоставить пользователю дополнительный функционал, тогда в блокли появится новый раздел объект-специфичных блоков
- Блоки генерируются автоматически для полей, методов, свойств и событий, помеченных специальными атрибутами (ссылка)
- Такой публичный функционал может быть реализован только в основном классе объекта (классе-наследнике от
VarwinObject
). При этом на объекте могут быть и другие скрипты, управляющие его состоянием и взаимодействующие с основным классом - XRMS - локалезависимая платформа, поэтому необходимо указывать публичные названия объектов, шаблонов сцен, а также публичных (тех, из которых генерируются блоки) компонентов класса на всех языках, которые будут использоваться (на данный момент доступны только русский и английский)