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

动态插件管理器(引擎级共享:Runtime 与编辑器共用) 更多...

#include <PluginManager.h>

struct  LoadedPlugin
 已加载的插件信息 更多...

Public 类型

using GetABIVersionFn = int (*)()
 插件 C ABI 函数指针类型
using GetNameFn = const char* (*)()
using GetVersionFn = const char* (*)()
using RegisterTypesFn = void (*)()

Public 成员函数

 ~PluginManager ()
void LoadFromConfig (const std::string &configPath)
 从 JSON 配置文件加载所有插件(config → "plugins": [{"path": ...}])
void RegisterAllTypes ()
 调用所有已加载插件的 RegisterPluginTypes() 必须在 Game::Init() 之后调用(引擎内置类型已注册)
void UnloadAll ()
 卸载所有插件(FreeLibrary / dlclose)。注意:必须先于引擎销毁执行。
const std::vector< LoadedPlugin > & GetPlugins () const
 获取已加载插件列表

静态 Public 属性

static constexpr int kAbiVersion = 2
 插件 ABI 版本(插件侧通过 GetPluginABIVersion() 返回该常量)

详细描述

动态插件管理器(引擎级共享:Runtime 与编辑器共用)

负责加载/卸载插件 DLL,调用插件的 C ABI 函数,支持从 JSON 配置文件批量加载。

插件 = 脚本库(ABI v2):只负责注册反射类型,不搭建场景(场景来自 .scene 文件)。 使用前提:调用前须处于目标 EngineContext(TypeRegistry 按上下文存放), 插件注册的类型 factory 位于 DLL 内,故 UnloadAll() 必须先于引擎销毁执行。

成员类型定义说明

◆ GetABIVersionFn

using GetABIVersionFn = int (*)()

插件 C ABI 函数指针类型

◆ GetNameFn

using GetNameFn = const char* (*)()

◆ GetVersionFn

using GetVersionFn = const char* (*)()

◆ RegisterTypesFn

using RegisterTypesFn = void (*)()

构造及析构函数说明

◆ ~PluginManager()

~PluginManager ( )
inline

成员函数说明

◆ GetPlugins()

const std::vector< LoadedPlugin > & GetPlugins ( ) const
inline

获取已加载插件列表

◆ LoadFromConfig()

void LoadFromConfig ( const std::string & configPath)

从 JSON 配置文件加载所有插件(config → "plugins": [{"path": ...}])

参数
configPath配置文件路径(相对于 CWD)

◆ RegisterAllTypes()

void RegisterAllTypes ( )

调用所有已加载插件的 RegisterPluginTypes() 必须在 Game::Init() 之后调用(引擎内置类型已注册)

◆ UnloadAll()

void UnloadAll ( )

卸载所有插件(FreeLibrary / dlclose)。注意:必须先于引擎销毁执行。

类成员变量说明

◆ kAbiVersion

int kAbiVersion = 2
staticconstexpr

插件 ABI 版本(插件侧通过 GetPluginABIVersion() 返回该常量)


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