FInstancedStruct
It allows you to store different UStruct types in a single UPROPERTY, using a type-erased approach while maintaining full reflection and serialization.
usage:
UPROPERTY(EditAnywhere, BlueprintReadWrite,
meta = (BaseStruct = "/Script/MyModule.MyStruct", ExcludeBaseStruct))
FInstancedStruct MyStruct;
UPROPERTY(EditAnywhere, meta=(ExcludeBaseStruct))
TInstancedStruct<FBaseStruct> TemplatedDerivedOnly;
UFUNCTION(BlueprintCallable)
void MyFunction(UPARAM(Ref) const FInstancedStruct& SomeStruct);