ShitEngine 1.4.2
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
ResourceManager类 参考final

资源管理器(引擎上下文持有)—— 模板化统一门面 更多...

#include <ResourceManager.h>

Public 成员函数

 ResourceManager ()
 ~ResourceManager ()
 ResourceManager (const ResourceManager &)=delete
ResourceManager & operator= (const ResourceManager &)=delete
 ResourceManager (ResourceManager &&)=delete
ResourceManager & operator= (ResourceManager &&)=delete
MIX_Mixer * audioMixer () const

静态 Public 成员函数

static ResourceManager & GetInstance ()
static void Init ()
static void Destroy ()
 释放所有资源缓存(必须在 SDL_Quit 之前调用)
template<typename Res, typename... Args>
static Res * Load (Args &&... args)
 取或加载(懒加载)。键参数直接构造 ResourceTraits<Res>::KeyType: Load<Texture>("a.png") / Load<Font>("a.ttf", 24.f) 返回封装资源(->get() 取底层句柄);失败返回 nullptr(未缓存,可重试)。
template<typename Res, typename... Args>
static Res * Find (Args &&... args)
 仅查询缓存(命中返回封装,未命中不加载返回 nullptr)
template<typename Res, typename... Args>
static bool Unload (Args &&... args)
 卸载单个资源(返回是否确实缓存过)
template<typename Res>
static void Clear ()
 清空某类资源的全部缓存(如 Clear<Audio>())
static void SetAudioMixer (MIX_Mixer *mixer)
static void SetAssetRoot (const std::string &root)
 设置资产根目录(空串清除)。相对路径在资产根下存在时按根解析,否则原样 (进程 cwd 语义)。编辑器打开项目时指向项目根,使项目内相对路径可加载。
static const std::string & GetAssetRoot ()
static std::string ResolveAssetPath (const std::string &path)
 绝对路径原样返回;相对路径先试资产根(存在才用),否则原样返回
static Resource * GetResourceByUuid (std::uint64_t uuid)
 按会话级 uuid 查资源(遍历全部已注册缓存;未命中返回 nullptr)

详细描述

资源管理器(引擎上下文持有)—— 模板化统一门面

通过 Load<T>(key...) 按资源类型访问缓存;每种类型由 ResourceTraits<T> 特化 描述(缓存键 / 哈希 / 工厂),首次使用时自动在类型注册表创建独立缓存。

扩展新资源类型(引擎或插件侧):继承 Resource 实现 load()/release(),再 特化 ResourceTraits<T>(KeyType/HashType/kTypeName/create)即可——缓存、 GetResourceByUuid、全量清理、日志计数自动接入,管理器零改动。

语义:懒加载;加载失败不缓存(下次请求重试,文件后补/修复后自愈)。 同键资源只加载一次;调用方借用指针,缓存生命周期 = 引擎会话 (Game::Destroy 统一按序销毁),借用裸指针安全。 相对路径经资产根解析(SetAssetRoot,编辑器指向项目根);未命中回退进程 cwd 语义——Runtime 的 "resource/..." 场景路径不受影响。

构造及析构函数说明

◆ ResourceManager() [1/3]

ResourceManager ( )

◆ ~ResourceManager()

◆ ResourceManager() [2/3]

ResourceManager ( const ResourceManager & )
delete

◆ ResourceManager() [3/3]

ResourceManager ( ResourceManager && )
delete

成员函数说明

◆ audioMixer()

MIX_Mixer * audioMixer ( ) const
inline

◆ Clear()

template<typename Res>
void Clear ( )
inlinestatic

清空某类资源的全部缓存(如 Clear<Audio>())

◆ Destroy()

void Destroy ( )
inlinestatic

释放所有资源缓存(必须在 SDL_Quit 之前调用)

◆ Find()

template<typename Res, typename... Args>
Res * Find ( Args &&... args)
inlinestatic

仅查询缓存(命中返回封装,未命中不加载返回 nullptr)

◆ GetAssetRoot()

const std::string & GetAssetRoot ( )
static

◆ GetInstance()

ResourceManager & GetInstance ( )
static

◆ GetResourceByUuid()

Resource * GetResourceByUuid ( std::uint64_t uuid)
static

按会话级 uuid 查资源(遍历全部已注册缓存;未命中返回 nullptr)

◆ Init()

void Init ( )
inlinestatic

◆ Load()

template<typename Res, typename... Args>
Res * Load ( Args &&... args)
inlinestatic

取或加载(懒加载)。键参数直接构造 ResourceTraits<Res>::KeyType: Load<Texture>("a.png") / Load<Font>("a.ttf", 24.f) 返回封装资源(->get() 取底层句柄);失败返回 nullptr(未缓存,可重试)。

◆ operator=() [1/2]

ResourceManager & operator= ( const ResourceManager & )
delete

◆ operator=() [2/2]

ResourceManager & operator= ( ResourceManager && )
delete

◆ ResolveAssetPath()

std::string ResolveAssetPath ( const std::string & path)
static

绝对路径原样返回;相对路径先试资产根(存在才用),否则原样返回

◆ SetAssetRoot()

void SetAssetRoot ( const std::string & root)
static

设置资产根目录(空串清除)。相对路径在资产根下存在时按根解析,否则原样 (进程 cwd 语义)。编辑器打开项目时指向项目根,使项目内相对路径可加载。

◆ SetAudioMixer()

void SetAudioMixer ( MIX_Mixer * mixer)
static

◆ Unload()

template<typename Res, typename... Args>
bool Unload ( Args &&... args)
inlinestatic

卸载单个资源(返回是否确实缓存过)


该类的文档由以下文件生成: