Разработка игровой логики¶
Создание скриптового компонента¶
В бета версии пользователь может реализовать логику для своего игрового проекта с помощью скриптовых компонентов, написанных на языке С++. Подчеркнем факторы, на которые необходимо обратить внимание при создании собственного класса компонента.
Скриптовый компонент, как и любой другой компонент в системе GOC, наследуется от базового класса Component.
Наверняка, вам потребуется, чтобы ваш компонент обновлялся каждый кадр вместе с остальными компонентами. Для этого необходимо, чтобы ваш класс реализовывал интерфейс IComponentUpdate.
Для того, чтобы вы могли воспользоваться созданным вами компонентом в редакторе, необходимо, чтобы созданный компонент поддерживал рефлексию.
Предположим, вы хотите создать скриптовый компонент MyComponent
Cоздайте файлы
MyComponent.h
иMyComponent.cpp
в папкеsource/game/main_module
вашего проекта.
Ниже представлен шаблон кода класса
MyComponent
, объявленного в файлеMyComponent.h
согласно факторам, изложенным выше. Данный класс готов к использованию в качестве основы для ваших скриптовых компонентов.1#pragma once 2 3#include "nau/scene/components/component.h" 4#include "nau/scene/components/component_life_cycle.h" 5#include "nau/scene/scene_object.h" 6 7class MyComponent final : public nau::scene::Component, 8 public nau::scene::IComponentUpdate 9{ 10 NAU_OBJECT(MyComponent, nau::scene::Component, nau::scene::IComponentUpdate) 11 NAU_DECLARE_DYNAMIC_OBJECT 12 13 void updateComponent(float dt) override; 14};
В файл
MyComponent.cpp
поместите следующий код:1#include "MyComponent.h" 2 3NAU_IMPLEMENT_DYNAMIC_OBJECT(MyComponent) 4 5void MyComponent::updateComponent(float dt) 6{ 7}
Необходимо также зарегистрировать класс MyComponent в движке. Для этого в файле
source/game/main_module/module.cpp
в тело методаinitialize
добавьте следующий код:nau::getServiceProvider().addClass<MyComponent>();
Для отображения компонента в редакторе требуется сохранить изменения в проекте Visual Studio, а затем перезапустить редактор (открыть-закрыть). Результат компиляции проекта можно отследить в редакторе.
Для углубленной работы с компонентами рекомендуется обратититься к руководству по API движка.