Unreal Engine 4
http://uengine.ru/forum/

USTRUCT в UFUNCTION
http://uengine.ru/forum/viewtopic.php?f=19&t=14133
Страница 1 из 2

Автор:  Agny [ 22 июл 2018, 10:48 ]
Заголовок сообщения:  USTRUCT в UFUNCTION

Как правильно сделать что бы функция выдавала структуру на выходе?

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

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


Но не то что мне хотелось бы.

Автор:  Snake [ 22 июл 2018, 17:15 ]
Заголовок сообщения: 

Код:
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;
}

Автор:  Agny [ 23 июл 2018, 14:25 ]
Заголовок сообщения: 

Snake, не работает. Выдает:

Код:
Unrecognized type 'MyStruct' - type must be a UCLASS, USTRUCT or UENUM

Автор:  Snake [ 23 июл 2018, 15:32 ]
Заголовок сообщения: 

структура в с++ обьявлена по аналогу выше? хедер с обьявленой структурой в шапке присутствует?

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

Автор:  Snake [ 23 июл 2018, 15:48 ]
Заголовок сообщения: 

Изображение
и ошибки в:
1 -нужен префикс для структур анриаловский F...

2 - OutStruct = FMyStruct(); тип переменной не обьявлен FMyStruct OutStruct;

Автор:  Agny [ 23 июл 2018, 15:55 ]
Заголовок сообщения: 

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)


Но у меня та же ошибка.

Автор:  Snake [ 23 июл 2018, 16:03 ]
Заголовок сообщения: 

у меня то что на скрине скомпилилось

Автор:  Snake [ 23 июл 2018, 16:07 ]
Заголовок сообщения: 

в .срр должно быть:
FMyStruct UYourClass::MyFunc(float inA, float inB)
{...}

Автор:  Agny [ 23 июл 2018, 16:13 ]
Заголовок сообщения:  Re:

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)

Не работает. А так в исходниках плагинов сделано.

Автор:  Snake [ 23 июл 2018, 16:27 ]
Заголовок сообщения:  Re:

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 ==========

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/