# Lyra - 自定义 AssetManager


## ***作用***

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

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

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

*这样做的好处：*

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

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

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

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

3. *可靠的内存管理*

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

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

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

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

## ***修改默认Manager***

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

![image-20250715235145331](https://raw.githubusercontent.com/vlicecream/cloudImage/main/image-20250715235145331.png)


