1. 项目概述
在C++游戏引擎开发中,资源管理是核心子系统之一。本次实验聚焦于实现基于RAII(Resource Acquisition Is Initialization)原则的资源管理系统,通过UML类图指导代码实现。系统包含异常处理体系、资源句柄和资源管理器三个关键部分,构成一个完整的资源生命周期管理解决方案。
作为从实验一过渡到实验二的衔接,我们需要理解Vector3D和Transform类如何与新的资源管理系统协同工作。实验一已经实现了基础的3D向量运算和变换功能,而实验二将引入更专业的资源管理机制,这对构建健壮的游戏引擎至关重要。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. UML类图深度解析
2.1 异常体系设计
2.1.1 EngineException基类
作为异常体系的根基,EngineException采用标准C++异常设计模式:
cpp复制class EngineException : public std::exception {
private:
std::string message_;
public:
explicit EngineException(const std::string& message);
const char* what() const noexcept override;
};
关键设计要点:
- 继承自标准库的std::exception,保证与C++异常系统的兼容性
- 使用std::string存储异常信息,避免C风格字符串的内存管理问题
- what()标记为noexcept,防止异常处理过程中再抛异常
- override关键字确保正确重写虚函数
2.1.2 ResourceNotFoundException派生类
专用于资源加载失败的场景:
cpp复制class ResourceNotFoundException : public EngineException {
public:
explicit ResourceNotFoundException(const std::string& path);
};
设计考量:
- 构造函数接收资源路径参数,自动生成包含"not found"关键词的错误信息
- 复用基
