Lua脚本推送类函数PN.click()

我正在将 Lua 脚本集成到我的 iPhone 游戏实现中,效果非常好!

出于纯粹的外观原因,我希望我的 Lua 函数格式为 PN.function(),而不是 function()。

我已经尝试将函数注册为:

lua_register(lua, "PN.Color", Color);

但它不允许我在 Lua 脚本中调用它。

有人有什么建议吗?

谢谢!

我自己回答了:

lua_newtable(lua);
int pn = lua_gettop(lua);

lua_pushstring(lua, "Click");
lua_pushcfunction(lua, Click);
lua_settable(lua, pn);

lua_pushstring(lua, "Release");
lua_pushcfunction(lua, Release);
lua_settable(lua, pn);

lua_setglobal(lua, "PN");

原文链接 https://stackoverflow.com/questions/8627919

点赞
stackoverflow用户734069
stackoverflow用户734069

你不能在Lua中使用 . 作为函数名称。如果你试图将所有的Lua函数放在一个名为 PN 的全局表中,那么你必须真正这样做。

记住: lua_register 只是一个宏:

 #define lua_register(L,n,f) \
        (lua_pushcfunction(L, f), lua_setglobal(L, n))

这并不意味着你不能更具体地自己做。

如果你有一个名为 PN 的全局表,你想把Lua函数注册到其中,你可以执行以下步骤:

  1. 使用 lua_getfield(L,LUA_GLOBALSINDEX,“PN”)PN 表压到堆栈上。
  2. 使用 lua_pushcfunction(L,Color) 将要注册的函数压到堆栈上。
  3. 使用 lua_setfield(L, -2, "Color") 把函数放在表的正确位置上。
  4. 使用 lua_pop(L,1) 从堆栈中弹出表。
2011-12-25 03:18:12