代码之家  ›  专栏  ›  技术社区  ›  debu

通过Lua(iphonesdk)访问对象

  •  2
  • debu  · 技术社区  · 16 年前

    我正在努力掌握Lua的工作原理,以及如何将它集成到一个项目中,比如一个基于Obj-C的iPhone游戏。我已经很好地集成了Lua的源代码,并且已经设法使用一个简单的管理器类来将.Lua文件中编写的函数调用转换为项目中的Obj-C方法。

    我现在有点卡住了;我不知道如何去做我想用Lua做什么,在google上搜索了很多,我还没有找到一篇文章来填补我理解上的小空白。我想做的是使用Lua为我的游戏中的关卡编写简单的游戏逻辑;例如,我可能想检查玩家是否移动到关卡的某个部分,然后一旦他移动,我就检查他是否捡起一个物体,然后一旦他抛出那个物体,我就检查它是否击中另一个物体,等等。

    在剧本里,我想有这样的东西:

    if (objectsAreTouching(level.objects["objIndex1"], level.objects["objIndex2"]))
    {
       //Move to next win-condition.
    }
    

    objectsAreTouching ,但我看不出如何从.lua文件中访问游戏主类之一中的字典或数组。我想这一定是可能的,对吗?如果是,你怎么做?如果可以,那么您的游戏引擎中是否有一个方法可以将返回值的BOOL pass返回给脚本,这样上面的If语句就可以执行其中的代码了?

    谢谢你的帮助!

    1 回复  |  直到 16 年前
        1
  •  5
  •   Doug Currie    16 年前

    您(至少)有三种选择:

    1. table )和数组(也使用Lua 桌子

    2. 为Lua提供访问函数,以读取基于C++的字典和数组。这些访问功能与 objectsAreTouching 您描述的函数,但在数据访问器级别。通常,从访问器返回的结果是 lightuserdata .

    3. 使用Lua userdata metatable )和一个 environment