载入中...
搜索中...
未找到
原生插件模块
原生插件模块
脚本入口: eve.Plugins()
从动态库加载用 EVEngine SDK 编译的原生模块。
基本用法
local plugins = eve.Plugins();
plugins.load("plugins/gameplay.so"); // Windows 使用 .dll,macOS 使用 .dylib
print(plugins.isLoaded("plugins/gameplay.so") + "\n");
对象关系与调用时机
Plugins 加载动态库;库导出的 eve_plugin_init 触发模块注册;随后脚本从 eve 创建新模块。插件二进制与宿主共享 C++ ABI。
目标导向指南
加载平台匹配的插件
先用相同平台和构建配置的 EVEngine SDK 编译动态库,再调用 load(path);扩展名分别为 .dll、<tt>.so、<tt>.dylib。加载成功后插件注册的新类会出现在 eve 表中。
排查加载失败
检查 isLoaded(path)、架构、Debug/Release ABI 和依赖库搜索路径。插件初始化只能注册模块,不应假设窗口或 Graphics 已完成初始化。
常见问题
- 用错平台或架构的动态库。
- Debug 插件加载进 Release 宿主。
- 插件依赖库不在运行时搜索路径。
API 快查
下列方法名来自当前 Squirrel 绑定;同一模块创建的辅助对象(例如 World、Body、Source)的方法也列在这里。
getName()、isLoaded()、load()、unload()
使用要点
- 模块对象和它创建的资源对象应保存在全局或实体状态中,不要在每帧重复创建。
- 带
update(dt)的系统应在eve_update调用;绘制方法应在eve_render调用。 - 参数约束、默认值和返回类型以对应模块头文件及
addFunc绑定为准;本文 API 快查与当前源码同步生成。
源码: src/modules/plugins/ 相关测试: 在 test/ 中搜索 plugins。