另外注意:LoadClass<T>的模版名称,不能直接写UBlueprint,例如:LoadClass<UBlueprint>是错误的,创建蓝图时选择的是什么父类,则写对应的父类名,假如是Actor,那么要写成:LoadClass<AActor>,否则无法加载成功。 路径名也必须带_C后缀(LoadObject不需要带_C后缀),例如,蓝图路径是:Blueprint'/Game/Blueprints/MyBP....
另外注意:LoadClass<T>的模版名称,不能直接写UBlueprint,例如:LoadClass<UBlueprint>是错误的,创建蓝图时选择的是什么父类,则写对应的父类名,假如是Actor,那么要写成:LoadClass<AActor>,否则无法加载成功。 路径名也必须带_C后缀(LoadObject不需要带_C后缀),例如,蓝图路径是:Blueprint'/Game/Blueprints/MyBP....
另外注意:LoadClass<T>的模版名称,不能直接写UBlueprint,例如:LoadClass<UBlueprint>是错误的,创建蓝图时选择的是什么父类,则写对应的父类名,假如是Actor,那么要写成:LoadClass<AActor>,否则无法加载成功。 路径名也必须带_C后缀(LoadObject不需要带_C后缀),例如,蓝图路径是:Blueprint'/Game/Blueprints/MyBP....
另外注意:LoadClass<T>的模版名称,不能直接写UBlueprint,例如:LoadClass<UBlueprint>是错误的,创建蓝图时选择的是什么父类,则写对应的父类名,假如是Actor,那么要写成:LoadClass<AActor>,否则无法加载成功。 路径名也必须带_C后缀(LoadObject不需要带_C后缀),例如,蓝图路径是:Blueprint'/Game/Blueprints/MyBP....
LoadClass返回操作类,非对象返回UClass类型指针 原型如下 Outer 帮助我们进行搜索范围锁定,可以填入同目录资源,如不存在填入空 Name 资源文件名,可以在编辑器中通过选择资源右键获取引用名,注意蓝图加载需要加入后缀"_C" 成员属性都加UPROPERTY() 即使不在蓝图,细节面板中编辑,也需要对成员属性加UPROPERTY(),以此来使用...
UClass* Test = LoadClass<AActor>(NULL, TEXT("Blueprint'/Game/Blueprints/MapPathBrush_BP.MapPathBrush_BP_C'")); 官方还没出文档,只能先看代码注释: // Load an object. template< class T > inline T* LoadObject( UObject* Outer, const TCHAR* Name, const TCHAR* Filename=nullptr, uint32 Lo...
4. StaticLoadObject 5. LoadObject / LoadClass 性能与卡顿优化 预处理-资源注册表 异步载入 在项目的开发过程中,资源作为功能的载体,是产生无限可能的基础。无论是材质、网格、特效,还是玩家、AI、具体的业务逻辑,都需要以资源为支撑。因此,在项目中,资源动态创建非常常见。但是,有的同学却对资源创建的方式有不...
在ATestActor的BeginPlay()函数中,使用LoadClass,模块类名填蓝图资源的基类名; UClass*LoadBpClass=LoadClass<AActor>(NULL,TEXT("Blueprint'/Game/StarterContent/Blueprints/Blueprint_CeilingLight.Blueprint_CeilingLight_C'"));if(LoadBpClass){UE_LOG(LogTemp,Log,TEXT("LoadClass BPClass Successs"));} ...
LoadClass 一般用来加载蓝图类, UClass* 蓝图类的路径末尾加上_C UClass* pClass =LoadClass<AActor>(nullptr,TEXT("Blueprint'/Game/CPPFunction/Load/BP_LoadActor.BP_LoadActor_C'"));if(pClass) {UE_LOG(LogTemp, Warning,TEXT("pClass name:%s"), *pClass->GetName()); ...
这里说的静态加载指的是必须在构造函数中完成的加载方式,动态加载值得是可以在Runtime期间加载的方式,UE4源码里面,前者其实是对后者的一层封装,即FObjectFinder()是对LoadObject()的封装。But,FClassFinder()不是对LoadClass()的封装,FClassFinder()内部调用的是LoadObject()。