适应症:UAT编译插件报错,退出代码为6,错误信息表明验证版本是否符合条件的一个函数值为意外的null。
解决方法:用VS打开UE_5.4\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.sln,编辑Configuration/ModuleRules.cs。
找到IsValidForTarget这一方法(这一方法有多个,找到其中第一行赋值了supportedTargetTypes的那一个)。仅将其中的第一行赋值代码改为
IEnumerable<TargetType> supportedTargetTypes = new TargetType[] { };
try
{
supportedTargetTypes = moduleType
.GetCustomAttributes<SupportedTargetTypesAttribute>().SelectMany(x => x.TargetTypes).Distinct();
}
catch
{
string module_name = (moduleType != null) ? moduleType.Name : "<null>";
invalidReason = $"TargetType '{targetRules.Type}' : Failed to get SupportedTargetTypesAttribute from '{module_name}'";
return false;
}
重新编译项目,正常情况下应能生成新的UE_5.4\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll。这将使其正常返回并解决问题。