静态加载指的是必须在构造函数中完成的加载方式,动态加载值得是可以在Runtime期间加载的方式。
巨坑提示:
加载Class的路径问题,一定要在路径后面加_C,否在会报错;或者把前缀后缀都去掉只留纯路径。
静态加载:ConstructorHelpers::FClassFinder()和FObjectFinder()。
FObjectFinder()用来加载非蓝图资源,比如网格体、动画、贴图、音效等资源;
FClassFinder()用来加载蓝图并获取蓝图Class,比如角色蓝图。
代码演示:
static ConstructorHelpers::FObjectFinder SphereAsset(TEXT("/Game/StarterContent/Shapes/Shape_Sphere.Shape_Sphere"));
static ConstructorHelpers::FClassFinder UnitSelector(TEXT("Blueprint'/Game/MyProject/MyBlueprint.MyBlueprint_C'")); TSubclassOf UnitSelectorClass = UnitSelector.Class;
static ConstructorHelpers::FClassFinder UnitSelector(TEXT("Game/MyProject/MyBlueprint"));
TSubclassOf UnitSelectorClass = UnitSelector.Class;
两种路径方式。
LoadObject
LoadClass
LoadClass
代码演示:
UObject* Obj = LoadObject(NULL, TEXT("SkeletalMesh'/Game/MyMesh.MyMesh'"));
USkeletalMesh* MyMesh = Cast(Obj);
UTexture2D* Tex = LoadObject(NULL, TEXT("Texture2D'/Game/Textures/UI/tex_test001.tex_test001'"));
TSubclassOf UnitSelector = LoadClass(NULL, TEXT("Blueprint'/Game/MyProject/MyBlueprint.MyBlueprint_C'"));
TSubclassOf UnitSelector = LoadClass(NULL, TEXT("Game/MyProject/MyBlueprint"));