你的浏览器不支持canvas

让我们携手共创奇迹!

疑难杂症

Date: Author: LBD

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。转载请注明来自WindCrazy

这是一些奇奇怪怪的问题

一、Assertion failed: PIEInstanceID != INDEX_NONE

问题重现和参考:Crash on loading level with Landscape by 2 PIE instances Assertion failed: PIEInstanceID != INDEX_NONE [File:D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LazyObjectPtr.cpp]

如果你想在多人游戏中添加Landscape,你的map需要是有World Partition的。我试过了,可以!你可以参考官方文档:World Partition

二、Smart Link Proxy有时不工作(未解决)

问题解决办法参考:Ai Move To, Nav Proxy Not Firing. 20+ things to try

都试过了,而且上面还有没提到的我也试过,就是不知道为什么有时候不工作

三、Microsoft.MakeFile.targets(44, 5): [MSB3073]

代码为6

问题参考与解决办法:how can i solve Microsoft.MakeFile.targets(44, 5): MSB3073

使用编译环境:

Visual Studio Community 2022 17.10.3
Unreal Engine 5.3.2
JetBrains Rider 2024.1.4 RD-241.18034.76
Using Visual Studio 2022 14.38.33139 toolchain

编译的时候报错:

10>Microsoft.MakeFile.Targets(44,5): Error MSB3073 : 命令“D:\UE_5.3\Engine\Build\BatchFiles\Build.bat NetworkTeachingEditor Win64 Development -Project="C:\Users\My\Documents\Unreal Projects\NetworkTeaching\NetworkTeaching.uproject" -WaitMutex -FromMsBuild”已退出,代码为 6。

我把以下文件/文件夹删除后,右键.uproject文件然后点击Generate Visual Studio project files,重新编译就没有这个错误了,这个对我来说是有用的

.idea
.vs
Binaries
DerivedDataCache
Intermediate
Saved
.vsconfig
NetworkTeaching.sln

代码为8

同上述编译环境

编译报错:

28>Expecting to find a type to be declared in a module rules named 'HoudiniEngine' in 'UE5Rules, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.  This type must derive from the 'ModuleRules' type defined by UnrealBuildTool.
28>D:\VS\VS\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets(44,5): error MSB3073: 命令“D:\UE\UE_5.4\Engine\Build\BatchFiles\Build.bat WemakeMarsMREditor Win64 DebugGame -Project="E:\Work\2025\MR_mars1\WemakeMarsMR.uproject" -WaitMutex -FromMsBuild -architecture=x64”已退出,代码为 8。
28>已完成生成项目“WemakeMarsMR.vcxproj”的操作 - 失败。

解决方法:HoudiniEngine插件不能放在UE5的Engine文件夹中,可以放在项目的插件中。

之前RiderLink也出现过这种问题

参考链接:HoudiniEngine在UE5中创建C++工程时会报错

UE5 Rider编译项目 RD报错

四、BuildGraph.AutoMation报错

问题参考与解决办法:Error compiling the Automation Tool after updating Visual Studio today (Unreal 5.3.2)

使用编译环境:

Visual Studio Community 2022 17.10.3
Unreal Engine 5.3.2
JetBrains Rider 2024.1.4 RD-241.18034.76
Using Visual Studio 2022 14.38.33139 toolchain

编译的时候报错:

  BgScriptReader.cs(1642, 38): [CS8604] “void HashSet<string>.UnionWith(IEnumerable<string> other)”中的形参“other”可能传入 null 引用实参。

修改源码:BgScriptReader.cs在第1642行左右源码没有if (users != null)这句加上就可以了。

if (_graph.NameToReport.TryGetValue(reportName, out report))
{
    if (users != null)
    {
        report.NotifyUsers.UnionWith(users);
    }
}

五、Failed to generate project model definition files

Failed to generate project model definition files for 'Configuration: Development Editor, Platform: Win64'

此消息表明 Rider for Unreal Engine 无法从 UnrealBuildTool 获取项目属性,大概率是.Target.cs和Editor.Target.cs有问题,可先从他俩身上找问题

六、报错No corresponding file with the ‘Precompiled Header’ property set to ‘Create’ (/Yc) is found

不知道具体什么原因导致的,但是将Binaries,Intermediate,Saved包括Plugins文件夹内所有的临时文件夹删除后重新生成后就没有这个报错警告了

七、预计算可视性体积没用Precomputed Visibility Volume NOT WORK

引擎版本5.3.2

找到问题可能是引擎功能丢失: UE5.3~5.4 Precomputed Visibility Volume 功能丢了,希望反馈下

还有引擎代码提交https://github.com/EpicGames/UnrealEngine/pull/11304

八、未找到合适的转换来编码或解码内容。

LogWmfMedia: Error: An error occurred in the media session: 未找到合适的转换来编码或解码内容。

遇到问题是由于UE导入的6k视频在MediaPlayer中无法播放,双击视频就会报上面的错误,原因是缺少解码器,经实验是缺少H265HEVC视频格式支持。

来自设备制造商的 HEVC 视频扩展

不能下载的看这里 1,store.rg-adguard.net/这个网站选择productid,输入:9n4wgh0z6vhq,搜索后选择合适的版本下载即可安装。或者选择url,复制微软商店里的链接粘贴进去也能下载。 2,下载appxbundle后缀的安装包双击安装就可以了

参考:Image and video codecs and import formats

九、使用5.2.1时启用OpenXR崩溃

问题详情与解决方案:Crash when opening project on 5.2.1 with OpenXR plugin enabled

使用5.2.1时启动游戏崩溃并报错:Assertion failed: ((Result) >= 0)[File:D:\build++UE5\Sync\Engine\Plugins\Runtime\OpenXR\Source\OpenXRHMD\Private\OpenXRCore.cpp] [Line: 24]

使用 OpenXR Explorer设置一下 OpenXR runtime,如图

十、Source package referenced an object in target package but the target package was marked NeverCook or is not cookable for the target platform.

UATHelper: Packaging (Android (ASTC)): LogCook: Error: Content is missing from cook. Source package referenced an object in target package but the target package was marked NeverCook or is not cookable for the target platform.
PackagingResults: Error: Content is missing from cook. Source package referenced an object in target package but the target package was marked NeverCook or is not cookable for the target platform.
UATHelper: Packaging (Android (ASTC)):     Source package: /Game/LV01_02/Art/SciFiIndustrialBase/Materials/MI_Blue_Decals
UATHelper: Packaging (Android (ASTC)):     Target package: /Bridge/MSPresets/M_MS_Glass_Material/Textures/White
UATHelper: Packaging (Android (ASTC)):     Referenced object: /Bridge/MSPresets/M_MS_Glass_Material/Textures/White.White

原因就是Bridge的SupportedTargetPlatforms没有”Android”这一项,现在加上就ok了

"SupportedTargetPlatforms": [
		"Win64",
		"Mac",
		"Linux",
		"Android"
	],

十一、屏幕时不时闪黑,UE右键菜单栏不显示

参考:关闭OverlayTestMode,终于解决困扰了我好久游戏切换浏览器卡死掉驱动的问题

注册表:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Dwm]
"OverlayTestMode"=dword:00000005

十二、CmdLink编译报错LNK2001:unresolved external symbol

具体报错信息:

8>Module.Core.13.cpp.obj: Error  : LNK2001: unresolved external symbol "wchar_t * GInternalProjectName" (?GInternalProjectName@@3PA_WA)
8>Module.Core.3.cpp.obj: Error  : LNK2001: unresolved external symbol "wchar_t * GInternalProjectName" (?GInternalProjectName@@3PA_WA)
8>Module.Core.8.cpp.obj: Error  : LNK2001: unresolved external symbol "wchar_t * GInternalProjectName" (?GInternalProjectName@@3PA_WA)
8>Module.Core.9.cpp.obj: Error  : LNK2001: unresolved external symbol "wchar_t * GInternalProjectName" (?GInternalProjectName@@3PA_WA)
8>Module.Core.10.cpp.obj: Error  : LNK2001: unresolved external symbol "wchar_t * GInternalProjectName" (?GInternalProjectName@@3PA_WA)
8>Module.Core.3.cpp.obj: Error  : LNK2001: unresolved external symbol "wchar_t const * const GForeignEngineDir" (?GForeignEngineDir@@3PEB_WEB)
8>CmdLink.exe: Error  : LNK1120: 2 unresolved externals

参考:虚幻论坛

我们只需要在CmdLink.cpp头文件引用下方添加

#if !defined(UE_PROJECT_NAME)
TCHAR GInternalProjectName[64] = TEXT("CmdLink");
#else
TCHAR GInternalProjectName[64] = TEXT(PREPROCESSOR_TO_STRING(UE_PROJECT_NAME));
#endif
IMPLEMENT_FOREIGN_ENGINE_DIR()

十三、UE着色器编译CPU跑不满

在BaseEngine.ini中将PercentageUnusedShaderCompilingThreads的值改为5这个是更改不占用CPU的比率,然后将WorkerProcessPriority改为1(0正常,1高优先级,2实时,默认为-1)这个是更改ShaderCompileWorker的优先级,改完重启UE应该就可以了。

十四、打包Error C7582

做项目时使用了Niagra模块,在打包时遇到了Error C7582 : ‘bInitialOwnerVelocityFromActor’: default member initializers for bit-fields requires at least ‘/std:c++20’.报错信息

经查找几种原因也没发现为什么会这样,我使用的时5.4版本引擎

从文档Epic C++ Coding Standard for Unreal Engine页面的Modern C++ Language Syntax部分可以查询到该版本Unreal使用的C++标准版本,总结如下:

5.0 C++ 17
5.1 C++ 17
5.2 最低支持C++17,使用C++ 20编译
5.3 最低支持C++17,使用C++ 20编译
5.4 最低支持C++17,使用C++ 20编译

另外,项目属性也是stdsc++20的,最后还是需要在.Build.cs中添加CppStandard = CppStandardVersion.Cpp20;才可以


对于本文内容有问题或建议的小伙伴,欢迎提出问题