Unreal Engine 4 пример создания простейшей функции на с++ и ее вызов на блупринтах

From IML Wiki
Jump to: navigation, search

Постановка задачи

  • Создать на движке Unreal Engine 4 простейшую функцию на c++, дабы в дальнейшим ее вызывать из блупринтов.
  • Функция должна принимать два значения и возвращать одно значение, например, принимать числа A и B и возвращать их сумму.

слева

Решение

  • Создается проект на с++, дабы был родительский класс на с++ и дочерний от него на блупринтах, например при создании проекта на с++, от движкового класса персонажа, на с++, наследуется шаблонный класс персонажа (в котором написана логика шаблона), тоже на с++, и от него наследуется класс на блупринтах.
  • В заголовочном файле [названиеПроекта]Character.h объявляется функция:
public:
	UFUNCTION(BlueprintCallable)
		void testFunctionAB(int a, int b, int& result);

Поскольку функция, на чистом с++, может возвращать только одну переменную в качестве результата, а на блупринтах возможно получить множество выходных параметров, возвращаемое значение на с++ устанавливается как void, а в реальности возвращаемым значением функции будут ее аргументы переданы в нее по ссылке (&). Так же макрос "UFUNCTION(BlueprintCallable)" нужен для того, что бы функция была доступной из блупринтов.

  • В файле реализации [названиеПроекта]Character.cpp создается реализация данной функции
void AreturnFuncParametresCharacter::testFunctionAB(int a, int b, int & result)
{
	result = a + b;
}
  • Компилируем проект

Результат

После проделанной работы, в дочернем классе, на блупринтах, будет доступна функция "testFunctionAB", которая будет принимать два параметра типа int и возвращать их сумму.

Заметки

  • Можно получать не один возвращаемый параметр функции, а несколько, все они должны быть представлены ссылками во входящих параметрах.
  • Другие типы передаваемых значений, например вектор "FVector" так же можно использовать.
  • Название типов переменных, которые используются в движке можно найти на сайте технической документации, пример: документация FVector
  • Так же при операциях над разными типами может понадобиться подключить их заголовочный файл, его как всегда можно найти на сайте технической документации.
  • Если пометить функцию модификатором "static", тогда, такую статическую функцию можно будет вызвать из любого blueprint класса, например создав ее в персонаже, доступной она будет и в контроллере.
  • Лучшими практиками является создание общих статических функций в специально для этого отведенном классе под названием "BlueprintFunctionLibrary".