Полезное

Мы Вконтакте

Discord канал

#
Пред.
12
Аватара пользователя
Пользователь
Сообщения: 589
Как правильно сделать что бы функция выдавала структуру на выходе?

Что бы в Блюпринтах на вход подавать одно, а на выходе можно было получить несколько значений, а не одно.

Нашел в интернете что то близкое:


Но не то что мне хотелось бы.
Аватара пользователя
Пользователь
Сообщения: 2319
Код:
USTRUCT(BlueprintType)
struct MyStruct
{
   GENERATED_USTRUCT_BODY()
   MyStruct() {}

   UPROPERTY(EditAnywhere, BlueprintReadWrite)
      float A;
   UPROPERTY(EditAnywhere, BlueprintReadWrite)
      float B;
}

UFUNCTION(BlueprintCallable)
MyStruct MyFunc(float inA, float inB)
{
        OutStruct = MyStruct();
        OutStruct.A = inA;
        OutStruct.B = inB;
        return OutStruct;
}

_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 589
Snake, не работает. Выдает:

Код:
Unrecognized type 'MyStruct' - type must be a UCLASS, USTRUCT or UENUM
Аватара пользователя
Пользователь
Сообщения: 2319
структура в с++ обьявлена по аналогу выше? хедер с обьявленой структурой в шапке присутствует?

А структуры обьявленые в редакторе, в с++ можно забыть о них, с++ ничего не знает из того что обьявлено в редакторе,
может и есть какой-то трюк получить их из ассета структуру, но зачем если ее можно на плюсах обявить.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 2319
Изображение
и ошибки в:
1 -нужен префикс для структур анриаловский F...

2 - OutStruct = FMyStruct(); тип переменной не обьявлен FMyStruct OutStruct;
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 589
Snake всё есть. И про F я знаю. Всё поставил, но не работает.

В исходниках плагинов вообще всё проще.

В *.cpp файле пишется функция в начале её имени устанавливается имя структуры, начинается на F.

Код:
#pragma region Method Calls
FMyStruct .....::MyFunc(float inA, float inB)
....


В *.h файле:
Код:
USTRUCT(BlueprintType)
struct FMyStruct
{
   GENERATED_USTRUCT_BODY()


   UPROPERTY(EditAnywhere, BlueprintReadWrite)
      float A;
   UPROPERTY(EditAnywhere, BlueprintReadWrite)
      float B;
}

UFUNCTION(BlueprintCallable)
FMyStruct MyFunc(float inA, float inB)


Но у меня та же ошибка.
Последний раз редактировалось Agny 23 июл 2018, 16:05, всего редактировалось 1 раз.
Аватара пользователя
Пользователь
Сообщения: 2319
у меня то что на скрине скомпилилось
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 2319
в .срр должно быть:
FMyStruct UYourClass::MyFunc(float inA, float inB)
{...}
_________________
we need to go deeper
Последний раз редактировалось Snake 23 июл 2018, 16:25, всего редактировалось 1 раз.
Аватара пользователя
Пользователь
Сообщения: 589
Snake писал(а):
в .срр должно быть:
UYourClass::FMyStruct MyFunc(float inA, float inB)
{...}


У меня работают в .срр

Код:
bool UYourClass::MyFunc(float inA, float inB)
void UYourClass::MyFunc(float inA, float inB)

И прочие. Но
Код:
FMyStruct UYourClass::MyFunc(float inA, float inB)

Не работает. А так в исходниках плагинов сделано.
Аватара пользователя
Пользователь
Сообщения: 2319
Agny писал(а):
Код:
USTRUCT(BlueprintType)
struct FMyStruct
{
   GENERATED_USTRUCT_BODY()


   UPROPERTY(EditAnywhere, BlueprintReadWrite)
      float A;
   UPROPERTY(EditAnywhere, BlueprintReadWrite)
      float B;
}


конструктор дефолтный где?

нормально все собирается:
Изображение
========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
_________________
we need to go deeper


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница