这是我想在 C++ 中使用 Lua C API 做的事情。
我试图找出一种使 userdata 从基本 userdata 对象派生的好方法。
我希望能够做到这一点:
local item = me:GetCurrentItem()
print(item:GetPos())
代替:
local item = me:GetCurrentItem()
print(item:GetBaseObject():GetPos())
在这些示例中,me:GetCurrentItem() 返回带有一些函数的 userdata,但它缺少 item:GetBaseObject() 返回的基本函数。
我在 Crysis Wars SDK 中绑定 Lua 用于学习目的。SDK 为作为结构的基本实体提供了一个接口。IItem 结构 (me:GetCurrentItem()) 是相同的。由于这些是结构,我不能将它们转换为基本结构或调用它的基本函数。我必须使用 IEntity *GetEntity() 函数。
我尝试在 __index 中更改 self 指针,但它会导致局部变量“item”变为“entity”,这有点明显,但我希望它在调用 GetPos 函数后恢复,这在某种程度上似乎不合逻辑。
有没有人有一个很好的解决这个问题?