TSoftObjectPtr和TSoftClassPtr加载资源方式

本文介绍了一种在Unreal Engine 4 (UE4)中处理软对象指针和软类指针的方法,用于从资源路径加载指定类型的对象实例或类。通过两个模板函数`GetObjectFromAsset`和`GetClassFromAsset`,可以方便地获取SkeletalMesh和AnimInstance等类型的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

template<class T>
T* GetObjectFromAsset(TSoftObjectPtr<T> AssMat)
{
	if (AssMat.Get() && AssMat.IsValid())
	{
		return AssMat.Get();
	}
	else if (AssMat.ToString() != TEXT(""))
	{
		return LoadObject<T>(NULL, *AssMat.ToString(), NULL, LOAD_None, NULL);
	}
	return NULL;
};


template<class T>
TSubclassOf<T> GetClassFromAsset(TSoftClassPtr<T> AssMat)
{
	if (AssMat.Get() && AssMat.IsValid())
	{
		return AssMat.Get();
	}
	else if (AssMat.ToString() != TEXT(""))
	{
		return LoadClass<T>(NULL, *AssMat.ToString(), NULL, LOAD_None, NULL);
	}
	return NULL;
};



PROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "DigitalMan")
		TSoftObjectPtr<USkeletalMesh> DigitalMesh;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "DigitalMan")
		TSoftClassPtr<UAnimInstance> DigitalAnimBP; //TSubclassOf<UAnimInstance> DigitalAnimBP;

	

TSubclassOf<UAnimInstance> UDigitalManFunctionLibrary::GetAnimInstanceFromAssetPtr(TSoftClassPtr<UAnimInstance> AssMat)
{
	return GetClassFromAsset<UAnimInstance>(AssMat);
}


USkeletalMesh* UDigitalManFunctionLibrary::GetSkeletalMeshFromAssetPtr(TSoftObjectPtr<USkeletalMesh> AssMat)
{
	return GetObjectFromAsset<USkeletalMesh>(AssMat);
}


USkeletalMesh* TemDigitalMesh = UDigitalManFunctionLibrary::GetSkeletalMeshFromAssetPtr(DigitalMesh);


TSubclassOf<UAnimInstance> TemDigitalAnimBP = UDigitalManFunctionLibrary::GetAnimInstanceFromAssetPtr(DigitalAnimBP);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值