uint32 not supported by blueprint, but int32 are?


    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats", meta = (AllowPrivateAccess = "true"))
        int32 something;

does compile


    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats", meta = (AllowPrivateAccess = "true"))
        uint32 something;

doesn’t.


LogCompile: Error: Type 'uint32' is not supported by blueprint.

Uhm, what the … ? why aren’t uint32 supported, but int32 are?

I had noticed that too, though if I remember correctly uint8 is supported.

So why is that?

A lot of these kind of “why doesn’t BP…” questions have answers that involve “to reduce complexity…” either for the BP compiler or for the person using BP.

It’s never been supported. uint8 and int32 are the only numeric types you can expose to Blueprint

uint8 will correspond the Byte type in blueprints, and that require to be a 0-255 value range, hence the uint8. int32 on the other hand will support positive and negative numbers, which is better to be used for regular integer operations. It would be rather confusing if you set an Integer in blueprint to -1 and the editor would turn it into 4billion :slight_smile:

Just for the reference, doubles are also not exposed for blueprints.

Because that would just complicate the blueprint usage, and don’t forget BP’s are designed for artists who have limited understanding of in-depth programming paradigms. I also remember the first time when i was learned the different variants of the value types and until this day it happens to me that i make mistake and try to set a negative number on an uint which results to bugs. To filter this issue, epic have decided not to include all variants of data types, since they would not be used by the artists only confuse them, since it is more error prone.

If you are a coder you can develope your application to be maximally efficient with the value types, but it is not something a blueprint ninja would bother with. In case you wish to expose some data types for blueprint usage in your project, you can find some help how to do that.

This is quite old topic but just for sake I’ll write that if you really need to make some variable that won’t accept <0 values you can use ClampMin="N" meta specifier.

2 Likes