一、直接属性引用
通过在头文件中定义变量指针,并将其设置为UPROPERTY(EditDefaultsOnly),之后在蓝图中将此变量赋予资源,最后就可以直接引用该变量设置资源了。不过这种方式似乎是不能动态控制,就是说点击Play按钮就全部会默认都加载。
/** construction start sound stinger */
UPROPERTY(EditDefaultsOnly, Category=Mesh)
UStaticMesh* MeshData;
二、构造时引用
此种方式是在类的构造方法中使用,使用ConstructHelpers::FObjectFinder()方法可以实现在引用指定的资源文件,贴图,特效,材质等等都可以使用。有一点需要注意的就是这种方式一定只能在构造方法中使用,如果试图自己创建一个方法并且在这个方法中使用ConstructHelpers::FObjectFinder的方式去引用资源,游戏则会崩溃。
static ConstructorHelpers::FObjectFinder WoodMaterial(TEXT("Material'/Game/StarterContent/Materials/M_Wood_Walnut.M_Wood_Walnut'"));
if (WoodMaterial.Object)
{
GetMesh()->SetMaterial(0, WoodMaterial.Object);
}
三、间接属性引用
间接属性引用跟第一种方法有点像同样用到了UPROPERTY(EditDefaulsOnly),但是不同的是它声明变量是需要使用TSoftObjectPtr。例如TSoftObjectPtr MeshData。这