UEC++ 资源加载(一)直接属性引用
1、编辑器直接加载:
通过使用属性宏标记UPROPERTY(Edit三个都可以3)来将资产对象指针暴露到编辑器面板,从而直接从编辑器面板拾取资产。
注意:UClass类指针,专门用来拾取类模版资产
1 | // 拾取任意类 |
2、TSubClassOf
TSubclassOf是提供UClass的安全模板类,通过此模板类我们可以快速在编辑器中进行类型选择,帮助我们快速构建某种类型对象数据。
TS对类型有约束,只能选取模版类型或是继承自模版类型的类或是蓝图
使用语法:
1 | TSubclassOf<T> type; |
通过通过TSubClassOf构建指定的对象类型
1 | // 拾取任意类 |
3、构造函数加载
在构造函数中可以借助构造函数资产加载类进行资源引用,更加方便便捷。
静态资源引用类ConstructorHelpers可以进行类引用,源资源引用,注意ConstructorHelpers只能在构造函数中使用
常用资源加入分类FClassFinder 常用来加载创建后的蓝图对象
FObjectFinder 用来加载各种资源,如音频,图片,材质,静态网格
FClassFinder语法
1 | // 返回值是TSubClassOf |
FObjectFinder语法
1 | UTexture2D* BarFillTure; |
注意:
- 操作路径前加入/Game/前缀
- ConstructorHelpers 类将尝试在内存中查找该资产,如果找不到,则进行加载
- ConstructorHelpers只能在构造函数中使用,GameInstance中是 Init 函数(需要重载)
- 如果加载失败或是未找到资源,对象内的资产属性为null
- 如果加载蓝图类模版对象时,需要加注“_C”
查找加载
在只知道目标资源路径的基础上,进行运行时态的资源加载,UE提供了LoadObject用来加载资产,LoadClass用来加载类,通过模版约束对象类型,增加操作安全,但是注意,资源加载可能会失败或是无效,需要对操作的结果进行判定。
- LoadObject 可直接返回资源有效对象指针
- LoadClass 返回操作类,非对象返回UClass类型指针
函数定义:
1 | /** |
参数含义:
- Outer 帮助我们进行搜索范围锁定,可以填入同目录资源,如不存在填入空
- Name 资源文件名,可以在编辑器中通过选择资源右键获取引用名,注意蓝图加载需要加入后缀”_C”
函数使用:
1 | LoadObject<AActor>(nullptr, TEXT("Blueprint'/Game/MyTestActor.MyTestActor_C'")); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 易锦风的博客!
评论






