虚幻官方资产管理直播笔记

208 阅读1分钟

UE4资产管理基础1

介绍序号引擎中一些资产相关知识点,入门内容


1 为什么什么资产管理重要

  • 所有游戏都需要资产

  • 运行的资产是有限的,需要管理、加载、释放

  • 影响游戏运行时性能的体验,同步/异步,启动/切换

  • 影响包体大小,打包/分块

  • 影响更新机制,pak/dlc/chunk

2 什么是资产

1.png

3 Package包含哪些对象

  • 子对象

  • 蓝图

  • 类 _C

  • DataAsset

  • DataTable

4 Object路径

  • 格式 类名`/路径/包名.对象名:子对象名

  • 类名一般会被忽视掉,所以一般不写

  • 类:/路径/包名.类名_C (包名往往和类名一致)

  • 对象:/路径/包名.对象

  • 路径:/Root/Path1/Path2

  • 路径 根(Root):/Game, /Engine, /XXXModule

5 管理引用

  • 硬引用

直接对象关联,自动触发加载

  • UProperty* 直接引用

  • TSubClassOf<>(对于某个T类型)

  • 软引用,路径指向

  • FSoftObjectPath 例如蓝图中对象的软引用

  • FSoftClassPath 例如蓝图中类的软引用

  • FSoftObjectPtr 看源码内部包括Package信息

  • FSoftObjectPtr

  • FSoftObjectPtr注意:蓝图中没有使用的函数等也会进行Cook

6 FindObject和LoadObject

  • FindObject如何根据名字获取对象?对象的内存组织关系

FUObjectHashTables.HashOuter, Hash

  • LoadObject如果找不到对象,会尝试加载路径Package

LoadClass==LoadObject

7 同步加载 (Sync Load)

  • 自动加载

  • FSoftObjectPath.TryLoad()->LoadObject

  • UKismetSystemLibrary::LoadAsset_Blocking->FSoftObjectPtr::LoadSynchronous->LoadObject

  • UKismetSystemLibrary::LoadClassAsset_Blocking

  • FStreamableManager::RequestSyncLoad

8 异步加载 (Async LOad)

  • UKismetSystemLibrary::LoadAsset->StreamableManager.RequestAsyncLoad(SoftObjectPath)

  • UKismetSystemLibrary::LoadAssetClass

  • StreamableManager::RequestAsyncLoad

9 Demo 地图进度条加载

  • 加载屏幕进度条

  • LoadPackageAsync & GetAsyncLoadPackage