Files
XCEngine/docs/api/XCEngine/Core/Asset/Asset.md

4.0 KiB
Raw Blame History

Asset

命名空间: XCEngine::Resources

类型: submodule

描述: 定义运行时资源系统的标识、句柄、缓存、加载和依赖管理基础设施。

概览

Core/Asset 是当前引擎运行时资源系统的基础层。它并不直接实现材质、着色器、网格或音频资源本身,而是提供一套更底层的通用约定:

从设计意图上看,这一层更接近商业引擎里“运行时资源服务”的雏形,而不是 Unity AssetDatabase 那类编辑器资产数据库。它强调的是运行时可加载、可引用、可扩展,而不是导入流水线和编辑器管理界面。

设计要点

  • 资源身份和资源对象分离。ResourceGUID 负责标识,IResource 负责对象实例,ResourceHandle<T> 负责类型化访问。
  • 资源类型分派依赖 GetResourceType<T>() 模板特化,而不是 RTTI 或字符串注册。
  • ResourceManager 当前是主入口,但它和 ResourceCacheAsyncLoaderResourceDependencyGraph 的集成还没有完全做完。
  • 当前自动注册的内建 loader 只有 MaterialLoaderShaderLoader
  • 这套接口已经有明显的“未来做流式加载和资源依赖卸载”的方向,但当前很多能力仍处于占位或半成品状态。

当前实现现状

  • 同步加载路径是当前最可靠的使用方式。
  • Load<T>() 直接把传入路径交给 loader当前不会自动调用 ResolvePath(),所以 SetResourceRoot() 只是一个路径拼接辅助,不是统一的实际加载入口。
  • LoadAsync() 已经有 API 形状,但当前队列不会被后台线程消费,成功回调路径也没有闭环,不能把它当成成熟的异步流式系统。
  • ResourceManagerResourceCache 和句柄引用计数之间还没有完全打通,文档里会明确标出这些差异,而不把它们包装成“完整资源生命周期管理”。

头文件

推荐阅读顺序

  1. 先读 ResourceTypes,理解 ResourceTypeResourceGUID
  2. 再读 IResourceImportSettings,理解资源对象和导入配置契约。
  3. 然后读 ResourceManagerResourceHandle,这是当前实际最常用的运行时入口。
  4. 最后再读 ResourceCacheAsyncLoaderResourceDependencyGraph,它们更偏向扩展机制和当前限制说明。

相关指南

相关文档