虚幻官方资产管理笔记

虚幻官方资产管理笔记

1 为什么资产管理重要

  • 所有游戏都需要资产
  • 运行的资产是有限的,需要管理、加载、释放
  • 影响游戏运行时性能的体验,同步/异步,启动/切换
  • 影响包体大小,打包/分块
  • 影响更新机制,pak/dlc/chunk

2 什么是资产

在这里插入图片描述

3 Package包含哪些对象

  • 子对象
  • 蓝图
  • 类 _C
  • DataAsset
  • DataTable

4 Object路径

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

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

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

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

  • 路径: /Root/Path1/Path2

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

5 管理引用

硬引用

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

  • UProperty* 直接引用
  • TSubClassOf<>(对于某个T类型)

软引用,路径指向

  • FSoftObjectPath 例如蓝图中对象的软引用
  • FSoftClassPath 例如蓝图中类的软引用
  • FSoftObjectPtr 看源码内部包括Package信息
  • FSoftObjectPtr<T=UObject>
  • FSoftObjectPtr<TClass=Object>

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

6 FindObject和LoadObject

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

    FUObjectHashTables.HashOuter, Hash

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

    LoadClass==LoadObject <UClass>

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

B站 直播内容

官方直播 拓展部分

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值