7 - 软引用与懒加载
本文将简要介绍蓝图编程中有关软引用和资源懒加载的话题,它们通常被用于性能优化。
背景
在蓝图编程中,一些SFX资源可能只会在某些时候才使用。我们通常使用对象引用使用它,这导致在一开始这些资源就会被加载进内存中,造成不必要的内存消耗。因此可以使用对象软引用进行资源的懒加载,避免内存占用过大问题。
软引用与懒加载
软引用如下图所示,这是一个Niagara
粒子系统的软引用:
要想使用它得先进行资源的加载,资源加载和使用的流程如下图所示:
其中,软引用经过Resolve
节点解析为对象引用,然后供其他节点使用,如果解析失败,说明该软引用指向的资源还未被加载,需要进行资源加载;如果解析成功,说明该软引用指向的资源已被加载,可以正常使用。对于资源加载有两种实现方法,红框中的是非异步懒加载方法,如果资源过大会导致游戏出现卡顿现象;蓝框中的则是异步懒加载方法,它只能在事件蓝图中使用,具体定义如下:
通过Async Load Asset
节点实现资源的异步懒加载,此时可以用输出执行引脚进行后续操作,等资源加载完成时会执行Completed
执行引脚。这里则是等待资源加载完成后生成粒子特效。
通过使用对象软引用进行资源的懒加载,可以有效避免不必要的内存占用,是高级性能优化技巧之一(还有纹理压缩等)。
参考资料
- Course: Unreal Engine 5 Blueprints - The Ultimate Developer Course | Udemy