UE4中的类型引用

前言

UE4中存在4种引用关系

  • Object Reference

  • Class Reference

  • Soft Object Reference

  • Soft Class Reference

下面分别介绍各自作用及优缺点

Object Reference

直接引用资源,也就是“硬引用”。其引用的类会自动被实例化加载到内存中。

Class Reference

对一个UObject的class的引用,C++中用TSubclassOf来表示。例如以下代码可指定该类只能是派生自UType的子类。可以起到一个筛选的作用。

UPROPERTY(EditDefaultsOnly)
TSubclassOf<UType> Type;

Soft Object Reference

软引用FSoftObjectPath,为了解决Object Reference的硬引用的缺点而引入的。可以做到当无需此资源时,无需将资源加载到内存中。只要保存一个资源路径就好。

Soft Class Reference

FSoftClassPath继承于FSoftObjectPath,其返回的是UClass*

FSoftClassPath于FSoftObjectPath的对比和使用

(1)FSoftObjectPath我们只需要某种特定资源的路径,可以用

UPROPERTY(EditAnywhere, meta = (AllowedClasses ="Material,StaticMesh"))
FSoftObjectPath  softObjectPath;

筛选出材质和静态网格资源

注意AllowedClasses ="Material,StaticMesh" 的 Material和StaticMesh不能有空格,否则会出现编辑器上的bug

(2)FSoftObjectPath的AllowedClasses 只能筛选"Material,StaticMesh,Particle等资源"

像我们自定义继承UObject的类用AllowedClasses 就无法筛选了。

这时候就需要FSoftClassPath 和 MetaClass。

UCLASS(config=Game)
class AMyCharacter : public ACharacter
{
	GENERATED_BODY()
 
	UPROPERTY(EditAnywhere, meta = (MetaClass = "MyActor"))
		FSoftClassPatht testClassPath;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值