Using Other Types in UE4 BP

I show you how to quickly expose different types to BP in UE4.

Nov. 24, 2020, 1 p.m.

While building out SteamBridge I needed a way to access SteamID in BP which happens to be a uint64 so I'm not able to directly. Here's the solution I came up with and I must say it's not the most ideal solution as I mainly needed typedefs, but this works.

 

USTRUCT(BlueprintType)
struct FUint64
{
	GENERATED_BODY()

	uint64 Value;

	operator uint64() const { return Value; }

	FUint64() : Value(0) {}
	FUint64(uint64 value) : Value(value) {}
};

USTRUCT(BlueprintType)
struct FMyCoolUint64Type : public FUint64 { GENERATED_BODY() using FUint64::FUint64; };

To avoid writing the same FUint64 struct for all of the types that just need to be a uint64 you can just derive your struct from it and add a using FUint64::FUint64; so we use it's constructors.

You should also add a method in your class to be able to construct this struct in BP since you can't set the value in BP as it's a type that isn't supported. You can add a method to take a string that's converted to a uint64 to output the FMyCoolUint64Type.

// psudo-code

UFUNCTION(BlueprintCallable)
void makecoolstruct(const FString& convert, FMyCoolUint64Type& type)
{
    type = { FCString::Strtoui64(*convert, NULL, 10) };
// or some conversion from string to type etc
}

 

until next time