enum

1, define

UENUM()
enum Status
{
  Stopped     UMETA(DisplayName = "Stopped"),
  Moving      UMETA(DisplayName = "Moving"),
  Attacking   UMETA(DisplayName = "Attacking"),
};

2, using

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Status)
TEnumAsByte<Status> Status;
struct

1, define

USTRUCT(BlueprintType)
struct TESTPROJ_API FMyStruct
{
    GENERATED_USTRUCT_BODY()

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Test")
        int32 Test;

    FMyStruct()
    {

    }
};

2, using

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
    FMyStruct Test;
Issues

Example:

PROPERTY(BlueprintReadWrite)
    TArray<FMyStruct*> AnimArray;

Error at building:

error : Inappropriate '*' on variable of type 'FMyStruct', cannot have an exposed pointer to this type.

Caused by:
The Unreal property system that Blueprints are built on top only support passing pointers to non-UObjects, you can only pass them ‘by value’ or ‘by reference’.

Solution:
Using reference instead of pointer.

PROPERTY(BlueprintReadWrite)
    TArray<FMyStruct&> AnimArray;

Or by value:

PROPERTY(BlueprintReadWrite)
    TArray<FMyStruct> AnimArray;

Reference:
https://answers.unrealengine.com/questions/132416/how-do-i-expose-a-pointer-to-a-struct.html


我们拥有艺术,所以不会被真相击垮。──尼采