有些需求工程中需要检测引擎版本,如在支持多个引擎版本的插件,在引擎中包含不同的模块,引擎版本之间 API 的差异等。
C++ 获取引擎版本
Runtime/Launch/Resources/Version.h
中有版本宏定义:
1 | // newer than a 4.11.* version, regardless of the changelist that it was built with) |
在代码中通过预处理指令即可使用。
从 TargetRules 获取引擎版本
TargetRules
中具有 Version
(ReadOnlyBuildVersion)成员,它是 BuildVersion
的类型,定义在 Programs\UnrealBuildTool\System\BuildVersion.cs 中。
1 | // UnrealBuildTools/System/BuildVersion.cs |
其中的 MajorVersion
/MinorVersion
/PatchVersion
分别对应 X.XX.X。
在 UE4.19 版本之前从 UBT 获取引擎版本比较麻烦:
1 | BuildVersion Version; |
在 UE4.19 及以后的引擎版本,可以通过 ReadOnlyTargetRules.Version
来获得,它是 ReadOnlyBuildVersion
类型,包裹了一个 BuildVersion
类。
可以在 Target.cs
或者 Build.cs
里通过 Target.Version
来访问引擎版本,可以根据不同的引擎版本来使用不同的库。