目录

Lyra - 自定义 AssetManager

作用

在任何一个 Unreal Engine 项目中,资源(Assets)都是构成游戏世界的基础,包括模型、纹理、蓝图、数据资产等等。随着项目规模的扩大,如何高效、有序地加载和管理这些成千上万的资源,成了一个巨大的挑战。开发者常常会遇到这些问题:

  • 资源加载代码散落在项目的各个角落,难以维护和修改。
  • 软引用(Soft Reference)虽然能避免不必要的内存占用,但加载逻辑写起来很繁琐。
  • 关键的游戏数据(如默认角色配置、全局设置等)没有一个统一的获取入口,导致代码依赖混乱。
  • 需要一个中心化的系统来处理异步加载、内存管理和调试。

为了解决这些问题,虚幻引擎提供了一个强大的解决方案——UAssetManager。而自定义一个继承自 UAssetManager 的类,就是为你的项目量身打造一个终极的“资源大管家”。

这样做的好处:

  1. 集中化、统一化的资源加载入口

    这是最核心、最直接的作用。你可以封装一个简单的静态函数(如 GetAsset()),让项目中的任何代码都能通过这一行调用来获取资源。

  2. 管理重要的全局数据资产

    你的游戏很可能会有一些“全局”或“默认”的数据资产,你可以将这些数据资产的软指针作为 AssetManager 的成员变量,并提供简单的获取函数。

  3. 可靠的内存管理

    对于那些加载后需要常驻内存的资源,我们可以在 AssetManager 内部维护一个 TSet 或 TArray 来持有它们的硬引用,防止它们被GC意外卸载

    可以在适当的时候(如切换关卡),调用 AssetManager 的函数来主动释放某些资源的引用,从而触发GC进行内存回收。

  4. 增强的调试与分析能力

    有了统一的处理,那么就可以很轻松的排查问题了

修改默认Manager

首先我们得在项目设置,选择到我们自定义的AssetManager类

https://raw.githubusercontent.com/vlicecream/cloudImage/main/image-20250715235145331.png