I have a strange issue on one of my properties.
its name: CooldownTime as float.
When the build process failed, it say that it can’t find a CoolDownTime property.
For any reason the “d” is moved to capital “D”.
If I set my property to CoolDownTime, I have no issue.
Is there any manipulation done in the Generateheader process or ???
any idea of the root cause?
Ok I think I understand:
So that’s means CoolDownTime was already user in another header file and UHT already get it with a capital “D” so it will always put a capital “D” in the generated files.
I can understand the reason now, but is it something that can be fixed in the next version of the engine, or do we have to take this as “by design” and keep this in mind ?
This looks like an FName issue. FNames are case insensitive, but will only store the string for the first version they find, so if they see CoolDownTime first, CooldownTime will be a name match, but will come out as CoolDownTime.
Here’s a similar question: Error when building UPROPERTY - Programming & Scripting - Unreal Engine Forums
Thansk for the clarification.
Now I’m aware of it, so it should be manageable
Unfortunately this will likely be an issue for the foreseeable future due to how ingrained FName usage is to UClass. If it is fixed, it certainly won’t be in the next version, although the core team are aware of this issue.
We’ve made a change for 4.5 which will make FName case-preserving for the editor and UHT. This should address the FName case issues you’ve been seeing.
I’ve checked that you’re able to rename asset, actor, and blueprint components in a way that changes only their case. I’ve also tested that you’re able to have a variables in different UObject/UStruct types that vary only by case, and that the UHT will generate code that actually compiles.
Thanks for this update. This will ease the coding and it’s clearly more flexible.