首页 > Personal > Game > 游戏引擎设计系列6-模块管理
2018
09-25

游戏引擎设计系列6-模块管理

为了更好的降低引擎各个模块之间的耦合性,同时可以根据实际需要动态的加载实际需要的模块,引擎中设计了模块管理,具体代码如下,
/// 模块接口,所有模块需要继承
interface Module {
bool OnLoad() // 加载时调用
void OnUnload() // 卸载时调用
};

typedef void (*CREATE_FUNC)(shared_ptr(Module) & ret);

/// 模块管理器
struct ModuleManager {
static shared_ptr(Module) Load(const Identifier & name); // 如果已经加载返回,如果没有,LoadLibraryA加载相应dll,GetProcAddress获取ModuleCreate函数,创建Module插入表中,并调用Module的OnLoad函数
static shared_ptr(Module) Find(const Identifier & name); // 在表中查找对应Module
static void Unload(const Identifier & name); // 从表中删除Module,并调用Module的OnUnload函数
static void StopAll(); // 停止所有Module
HashSet LoadedModuleTable; 保存Module的哈希表
};

最后编辑:
作者:wy182000
这个作者貌似有点懒,什么都没有留下。