【UE4 C++】ConstrcorHelper::FClassFinder 查找路径问题引起项目奔溃
补充:稍有些不足,现在过来补充一下;B站up的文档更清楚
一般加载Content中的资源方法有静态加载(在构造函数加载的)和动态加载
Uobject资源加载
ConstructorHelpers::FObjectFinder<T>只能在构造函数使用
LoadObject<T> 可以在任何地方使用
蓝图资源加载
ConstructorHelpers::FClassFinder <T> 只能在构造函数使用
LoadClass<T> 可以在任何地方加载
出现的问题主要是下面这个:
注意:蓝图类加载路径最后一定要加_C

Fatal error:[File:D:/Build/++UE4/Sync/Engine/Source/Runtime/CoreUObject/Private/UObject/UObjectGlobals.cpp] [Line: 3281]
Error LogWindows Bad path name: Blueprint'/Game/Blueprints/BP_Powerup, missing ' or an incorrect format
主要是第二行代码,意思是这个这个路径缺少 '或一个不正确的格式,其实就是路径格式问题。
路径格式问题
static ConstructorHelpers::FClassFinder<APowerup> BP_Powerup(TEXT("Blueprint'/Game/Blueprints/BP_Powerup.BP_Powerup'"));
Powerup = BP_Powerup.Class;
我是因为在C++中写了资源查找函数,然后格式写错了,编译的时候项目就直接奔溃了,之后把路径格式改了在编译器里编译还是打开项目就奔溃,
删掉了错误代码还是无法打开项目(其实删掉代码后,重新编译就好,说那么多废话干嘛)
unreal引擎编译c++代码的时候,如果代码中有错误,引擎非常容易崩溃,崩溃后,经常无法再次成功打开。这时候需要以下操作才可以重新打开:
1.将vs中的错误代码注释掉。
2.打开项目文件夹的目录,将 .vs、binary、intermediate、saved删掉。
3.在目录下找到.uproject右键重新生成。

重新生成文件 成功打开
打开后引擎提示如图

就是路径问题引起的,修改后重新编译
路径格式的讲究
之前我们用下面这个函数去引入文件
static ConstructorHelpers::FClassFinder<> (TEXT(""));
可以直接去Content里鼠标左键复制路径引用过来,是没问题的,但是我翻车了,则才有了这篇博客,我是用了这个路径才好的
static ConstructorHelpers::FClassFinder<APowerup> BP_Powerup(TEXT("/Game/Blueprints/BP_Powerup"));
if(BP_Powerup.Succeeded()) Powerup = BP_Powerup.Class;
静态加载class类,取''中且去掉.后缀路径就可以;不过动态加载LoadClass<>(NULL, 路径)路径需要加上_C后缀
解释一下和之前引用的区别,/Game/后面跟你要引入的文件的路径,不用加后缀哦。
还有一个是一定要用Succeeded()方法检测一下,以免空指针调用报错。
!!!路径一定要写好,我尝试有Succeeded()方法保护的情况下去乱写路径格式,真没让我失望,引擎崩溃了

浙公网安备 33010602011771号