有条件地从C++调用Lua函数。
2015-11-14 7:53:59
收藏:0
阅读:97
评论:1
我正在使用Lua编写脚本并在C ++中嵌入它们。在这个过程中,我使用**LuaBridge**。
在我的Lua脚本中,我有**一些变量需要首先检索以在C ++中使用,**此外,我有一个非常简单的函数:
run = function()
print ("state is on!")
end
然而,**仅在特定条件下才会调用此函数。例如,只有在从C ++代码经过一系列复杂的计算**获得“true”后才会调用。
受我的Lua和LuaBridge知识的限制,我知道的是:在执行
loadscript(L, "script.lua")
lua_pcall(L,0,0,0)
之后,我可以使用
LuaRef blabla = getGlobal(L, "blabla")
从Lua脚本中读取变量和函数。
但是,现在我需要首先读取变量并将它们在一个成员函数中使用:
LuaRunner::LuaRun(){}
该函数在一个单独的C ++类
class LuaRunner
中定义。如果条件为“true”,则会获取该条件,并调用此run()函数。由于进一步处理的限制,最好在C ++成员函数
LuaRunner::LuaRun(){}
中直接调用此run()函数。
因此,我想知道是否可能:
使用
LuaRef run = getGlobal(L, "run")
读取函数以及其他变量,并**_"保存"_**这个run()函数在C ++代码的某个地方(也许是作为类成员函数),然后稍后可以通过指针或同一类中的对象调用run()函数。是否可能?如果可能,如何做到?或者有其他好的主意?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
有时候,我们需要在 C++ 中存储 luabridge::LuaRef,以便稍后调用它们,就像正常调用其他函数一样。但有时候不需要将 LuaRef 存储在任何地方。一旦你加载了脚本,所有的函数都会留在你的 lua_State 中,除非你将它们设置为 nil 或通过加载另一个使用相同函数名称的脚本来覆盖它们。你可以使用 getGlobal 函数获取它们。如果你的 Lua 函数需要参数,你可以使用像这样的 LuaRef 的运算符() 来传递参数:
if(...) { // 你的调用条件 LuaRef f = getGlobal(L, "someFunction"); f(arg1, arg2, ...); // 如果你的函数不需要参数,只需使用 f(); }