表现
Assertion failed: !FPaths::IsRelative(Dir) [File:/Engine/Source/Runtime/Projects/Private/ProjectDescriptor.cpp] [Line: 337]
../../../UGCExample/../RemappedPlugins/ is not an absolute path
解决方案
将 ProjectDescriptor.cpp 第 143 行处修改:
// If this is a packaged build and there are additional directories, they need to be remapped to the packaged location
if (FPlatformProperties::RequiresCookedData() && AdditionalPluginDirectoriesValue->Num() > 0)
{
AdditionalPluginDirectories.Empty();
FString RemappedDir = FPaths::ProjectDir() + TEXT("../RemappedPlugins/");
// Fixed assertion failed
RemappedDir = FPaths::ConvertRelativePathToFull(RemappedDir);
AddPluginDirectory(RemappedDir);
}
分析
AddPluginDirectory 函数只接受绝对路径,但是 FPaths::ProjectDir() 有时返回相对路径,导致 RemappedDir 合成出来为相对路径,被 AddPluginDirectory 的 check 检测引发崩溃。
可以通过使用函数 FPaths::ConvertRelativePathToFull 将 RemappedDir 强制转换为绝对路径解决。
UE4是成熟的商业引擎
兄弟, 这是要修改引擎源码么?
确实,而且 UGCExample 需要使用源码版引擎。
你好 我遇到了同样的问题 我尝试了你的方法修改了引擎的ProjectDescriptor文件,然后重启再重新导出,但是似乎并没有生效而问题依旧,请问可能是不是需要重新编译引擎?如果是的话如何编译?总之请问你是如何解决这个问题的? 谢谢
是要编译引擎的,如果还不行发下报错信息