UE4_C++_资源加载与优化

本文介绍了UE4 C++中资源加载的多种方式,包括SpawnActor、ConstructHelpers、FStringAssetReference/FSoftObjectPath、StaticLoadObject以及LoadObject/LoadClass。同时探讨了性能优化策略,如预处理资源注册表和异步载入,以解决动态资源创建可能导致的性能瓶颈问题。
摘要由CSDN通过智能技术生成

UE4_C++_资源加载与优化

在项目的开发过程中,资源作为功能的载体,是产生无限可能的基础。无论是材质、网格、特效,还是玩家、AI、具体的业务逻辑,都需要以资源为支撑。因此,在项目中,资源动态创建非常常见。但是,有的同学却对资源创建的方式有不小疑惑。
同时,在注重性能的项目中,大量的资源动态载入会成为性能瓶颈之一,如何对其进行优化以提升性能,也是对开发的一大挑战。

本文会对常用的资源创建方式做一个整合;同时针对性能方面,提出载入优化的几种方式;另外对UE4中的资源管理进行一个简单的介绍。

常规资源加载方式

资源创建一般分为四个步骤:

  1. 以文件名创建一个空包

    位置: UObjectGlobals.h/ResolveName

  2. 创建一个FLinkerLoad,并加载对应的Uasset文件,将其序列化

    位置:UObjectGlobals.h / LoadPackageInternal -> GetPackageLinker -> LinkerLoad.cpp / CreateLinker

  3. 加载ImportMap

    位置:LinkerLoad.cpp / FinalizeCreation

  4. 加载ExportMap

    位置: LinkerLoad.cpp / CreateLoader - > CreateExport

更为详细的步骤可参考https://www.dazhuanlan.com/2019/11/18/5dd230d80a187/

常用的资源载入方式大致分为四种,即:

1. SpawnActor / SpawnActorDeferred / NewObject

当你可以取到资源类型信息时,可使用这种方式。

ACustomAsset* AActor = GetWorld()->SpawnActor<ACustomAsset>(ACustomAsset::StaticClass());
ACustomAsset* BActor = NewObject<ACustomAsset>(this,ACustomAsset::StaticClass())
  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值