UEC++ 资源加载(二)间接属性引用
FSoftObjectPath
- FSoftObjectPath是一个简单的结构体,使用一个字符串包含资源的完整名称。可以在编辑器中拾取资源(这与直接属性引用相同),但是并不加载资源!资源的加载需要通过额外的代码编写完成!
- FSoftObjectPath被暴露到面板中对于资源的拾取并没有特定的要求,所有能够被序列化的资源均能被拾取(类资源,非类资源)
在头文件中声明一个FSoftObjectPath变量,暴露到蓝图中,在蓝图中指定资源路径
1 | UPROPERTY(EditAnywhere) |
资源加载
FSoftObjectPath只是存储了资源的路径,使用前必须通过加载方式方可获得资源!加载方式分为同步加载(如果资源过大会导致游戏程序卡顿)和异步加载
- 同步加载
在加载运行线程中,阻塞线程的流程执行,将线程停止在当前加载逻辑中,加载完成后继续线程的执行逻辑操作,对于加载小资源可以保证资源的不为空,但是加载大资源将导致调用线程卡顿 - 异步加载
在加载线程中,不阻塞当前线程逻辑加载资源,加载器本身具备线程进行资源加载。较之同步加载更加的灵活,但是相对维护成本较高,资源加载成功后需要进行回调通知,以完成整个加载流程
加载资产
1 | // 直接引用资源 替代蓝图获取 |
通过通过TSubClassOf构建指定的对象类型
1 | // 拾取任意类 |
加载类:
1 | SourcePath.SetPath(TEXT("Blueprint'/Game/MyTestActor.MyTestActor_C'")); |
注:这里的加载都是同步加载
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 易锦风的博客!
评论






