If you went with the USTRUCT route, then you ran into the problem of the spawn params being inaccesible.
What you actually want your UStruct to look like is this:
^USTRUCT is marked for blueprint along with UProperties that blueprints can actually read and write
Assides from a unavoidable few crashes you might get from re-compiling your blueprint (this wont pose an ultimate problem), after you do this you can either set default values for a SpawnParams variable, or you can right click on the function node and split the struct. This will split the param into any uproperties you marked that are blueprintReadWrite.
^USTRUCT parameter before splitting the struct into separate definable pins. Alternatively you can break the set note into a make params Node.
USTRUCT(BlueprintType)
struct FSpawnCustomizations
{
GENERATED_USTRUCT_BODY()
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = SpawnParams)
int32 MinSpawnAmount = 1;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SpawnParams)
int32 MaxSpawnAmount = 1;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SpawnParams)
float Radius = 300;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SpawnParams)
float MinScale = 1;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SpawnParams)
float MaxScale = 1;
};
^Blueprint USTRUCT code. Actually looking back on this, I’m not sure what the Category even does. Better off not including it.