我想为我的游戏引擎添加对Lua脚本的完全支持.我自己设定的最大目标之一是保持完全模块化.这意味着,除了Lua绑定部分之外,我不希望我的引擎的其余部分使用任何特定于Lua的功能.
事实证明,直到现在还没有任何困难.纯C++到Lua函数绑定部分 - 比如绑定Vector,Color和Entity对象,以及诸如Draw库或Physics库之类的模块很容易与引擎的其余部分隔离.
现在,我的问题在于事件.我需要为脚本编写者提供一种响应游戏事件的方法.这涉及从引擎调用Lua函数.
例如:呼叫OnCreate,OnUpdate,OnCollide从C++在Lua实体.
这些事件发生在我的CEntity基类中,Lua模块无法知道它们何时以及如何发生.
可能的解决方案:
坏坏了!那是Lua绑定的东西混合到基础实体类中!
遗憾的是,我对此并不太了解.我确信它很难实现,也会带来一些小的逻辑和性能问题.
- 如何从我的C++引擎中触发Lua中的事件(调用钩子函数)而不需要在程序的Lua绑定模块之外使用任何Lua绑定代码?