摘自:http://www.v5xy.com/?p=558(有空看下这个人的博客)
.h文件
using namespace UF;
UCLASS()
class UDynamicLoadObjectLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "ShaoLang|Tools")
static FName GetObjectPath(const UObject* Obj);
UFUNCTION(BlueprintCallable, Category = "ShaoLang|Tools")
static UTexture2D* LoadT2DFromPath(const FName& Path);
UFUNCTION(BlueprintCallable, Category = "ShaoLang|Tools")
static UObject* LoadObjectFromPath(const FName& Path);
private:
template<typename ObjClass>
static FORCEINLINE ObjClass* LoadObjFromPath(const FName& Path)
{
if ( Path == NAME_None)
{
return NULL;
}
return Cast<ObjClass>(StaticLoadObject(ObjClass::StaticClass(), NULL, *Path.ToString()));
}
};
.cpp文件
FName UDynamicLoadObjectLibrary::GetObjectPath(const UObject* Obj)
{
if (!Obj)
{
return NAME_None;
}
//~
FStringAssetReference ThePath = FStringAssetReference(Obj);
if (!ThePath.IsValid()) return NAME_None;
//The Class FString Name For This Object
FString Str = Obj->GetClass()->GetDescription();
Str += "'";
Str += ThePath.ToString();
Str += "'";
return FName(*Str);
}
UTexture2D* UDynamicLoadObjectLibrary::LoadT2DFromPath(const FName& Path)
{
if (Path == NAME_None) return NULL;
//~
return LoadObjFromPath<UTexture2D>(Path);
}
UObject* UDynamicLoadObjectLibrary::LoadObjectFromPath(const FName& Path)
{
if (Path == NAME_None) return NULL;
return LoadObjFromPath<UObject>(Path);
}