Objective c Lua:调用将userdata返回给Lua的c方法
我正在使用LuaObjcBridge,我正在从Lua调用一个方法,如下所示:Objective c Lua:调用将userdata返回给Lua的c方法,objective-c,lua,Objective C,Lua,我正在使用LuaObjcBridge,我正在从Lua调用一个方法,如下所示: local position = owner:position() 在objective-c中,它返回一个带有X和Y的CGPoint结构,桥接器将其转换为Userdata。所以CGPoint struct->Lua userdata。在Lua中,如何从Userdata访问X和Y值?您需要: 定义元表,其中包含对userdata进行操作的方法 在userdata上设置元表 设置与userdata上的_索引字段相同的元
local position = owner:position()
在objective-c中,它返回一个带有X和Y的CGPoint结构,桥接器将其转换为Userdata。所以CGPoint struct->Lua userdata。在Lua中,如何从Userdata访问X和Y值?您需要:
- 定义元表,其中包含对userdata进行操作的方法
- 在userdata上设置元表
- 设置与userdata上的_索引字段相同的元表
- 设置一些对userdata进行操作的方法
- 把他们暴露在Lua面前
- 定义元表,其中包含对userdata进行操作的方法
- 在userdata上设置元表
- 设置与userdata上的_索引字段相同的元表
- 设置一些对userdata进行操作的方法
- 把他们暴露在Lua面前
userdata本身不能做任何事情,您需要添加一些方法来处理它。我没有使用LuaObjcBridge,但我对Lua和自定义桥有相当多的经验。我查看了代码,但在元表中没有看到允许访问结构成员的任何支持。看起来,元表只是试图为完整对象桥接objective C方法。您可以尝试position.x或position.y,但这些方法似乎不起作用。在这种情况下,您可以编写自己的桥接C++函数,这些函数将从USER数据中提取值。我知道这不完全是你想要的,但它可能会有所帮助。唯一的区别是类的组成方式是C++ + Obji CI没有使用LuaObjcBo桥,但是我有相当多的Lua和自定义桥的经验。我查看了代码,但在元表中没有看到允许访问结构成员的任何支持。看起来,元表只是试图为完整对象桥接objective C方法。您可以尝试position.x或position.y,但这些方法似乎不起作用。在这种情况下,您可以编写自己的桥接C++函数,这些函数将从USER数据中提取值。我知道这不完全是你想要的,但它可能会有所帮助。唯一的区别是类组成的方式是C++与Obj-C。