Metrick

UnrealEngine 4 reflection

Nov 17th, 2016
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. /** Так определяется структурный тип в UE4 */
  2. USTRUCT()
  3. struct FMyStruct
  4. {
  5.     GENERATED_USTRUCT_BODY()
  6.  
  7. public:
  8.     UPROPERTY()
  9.     FString StrValue;
  10.  
  11.     UPROPERTY()
  12.     int32 IntValue;
  13. };
  14.  
  15. /////////////////////////////
  16.  
  17. void Start()
  18. {
  19.     FMyStruct my_struct;  /** инстанс */
  20.     UStruct* st = my_struct.StaticStruct();  /** статические данные о структуре */
  21.     TArray<FString> Fields;  /** Будущий массив строк (сериализованных пар ключ-значение) */
  22.     for (TFieldIterator<const UProperty> PropIt(Struct); PropIt; ++PropIt)  /** итерация по этим данным (по properties структуры - полям рядом с которыми макрос UPROPERTY() */
  23.     {
  24.         FString FieldName = PropIt->GetName();
  25.         FString Data = Serialize(*PropIt, PropIt->ContainerPtrToValuePtr<void>(&my_struct));  /** Получение данных из инстанса структуры (Serialize - некая функция сериализации, не особо важно что там) */
  26.         Fields.Add(FieldName + TEXT(": ") + Data);
  27.     }
  28.     FString serialized_struct = FString::Printf(TEXT("{%s}"), *FString::Join(Fields, TEXT(", ")));  /** сохранение в JSON-подобную строку */
  29. }
Advertisement
Add Comment
Please, Sign In to add comment