加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua环境搭建

发布时间:2020-12-14 22:16:17 所属栏目:大数据 来源:网络整理
导读:使用Eclipse来开发lua。使用eclipse开发lua,可以运用其强大的扩展能力,大大地加快开发。文章将介绍怎么定制一个工具来生成lua,并进行调用。 开发工具下载 使eclipse开发lua有两种方法: 1)安装ldt; 2)下载整合好的eclipse; ldt的安装就不介绍了,大家

使用Eclipse来开发lua。使用eclipse开发lua,可以运用其强大的扩展能力,大大地加快开发。文章将介绍怎么定制一个工具来生成lua,并进行调用。

开发工具下载

使eclipse开发lua有两种方法: 1)安装ldt; 2)下载整合好的eclipse;

ldt的安装就不介绍了,大家可以到网上去搜索关于eclipse插件安装的教程;官方也有相应的说明:http://www.eclipse.org/koneki/ldt/#documentation

如果要安装c++相关的功能,还需要安装cdt,cdt的官方如下:http://www.eclipse.org/cdt/downloads.php


工程的创建

创建一个工程,叫luaTester; 然后编辑main.lua,运行,结果如下:



调试界面:



配置toLua++工具

在cocos2dx中开发lua,需要用到toLua++来生成文件。网上已经有相关教程,不过都不是很全面,操作也不是很方便。我在这里利用eclipse强大的工具配置功能来定制toLua++,使得开发更有效率。
点击菜单Run->External Tools -> External Tools Configurations...;弹出对话框,如下图所示:


在Program下增加一个工具,就叫luaMaker吧;配置如上图。
几点说明(假设cocos2dx的根目录为/Users/shhqw132/Documents/cocos2d-2.1rc0-x-2.1.3):
1) 在tools/tolua++目录下有tolua++工具,默认是打包的(windows打包成rar文件;mac下打包成zip文件)。根据情况减压一个到tools/tolua++下;上图中,工具的Location定位到刚刚减压缩出来的可执行文件。
2)Eclipse中内置了一些变量的地址。这里用到了${resource_loc} 这个变量,即当前选择的资源在系统中的绝对路径。
3)toLua++命令格式如下: ./toLua++ -L basic.lua -o xxx.cpp xxx.pkg ?; -L:指定相应lua文件的位置(用于修改生成的cpp文件,cocos2dx中用来对tolua++生产的文件做fix); -o 指定的是生成的cpp文件的名称; xxx.pkg是规则文件。
toLua++的作用就是读取xxx.pkg文件,然后结合-L中指定的lua(用于修改生成的代码),最终生成cpp文件。
在上图的Arguments中,添加相应的tolua++的参数。
更多关于-L的说明。 由于toLua++不支持回调函数,而cocos2dx中用到了如registerScriptHandler等回调函数,所以cocos2dx对用toLua++生成的代码进行了一些fix;这些fix的规则在tools/tolua++/basic.lua中定义。所以为了支持回调函数,请使用这个文件。
OK,工具配置完毕。
整合开发
创建一个cocos2d_lua工程,命名为LuaTest01。在项目的classes文件夹下创建一个pkg子文件夹,然后引入到工程中(我是用引用的方式加进来的)。
然后创建一个MyTest.h,并形成一个MyTest.pkg文件;具体如下图:


MyTest.h
[cpp]? view plain copy
  1. #ifndef?LuaTest01_MyTest_h??
  2. #define?LuaTest01_MyTest_h??
  3. ??
  4. #include?"cocos2d.h"??
  5. USING_NS_CC;??
  6. ??
  7. class?MyTest:?public?CCLayer?{??
  8. private:??
  9. ????int?invokeHandler;??
  10. public:??
  11. ????MyTest()?:?invokeHandler(0)?{}??
  12. ??????
  13. ????CREATE_FUNC(MyTest);??
  14. ????void?setHandler(int?_handler)???{??
  15. ????????this->invokeHandler?=?_handler;??
  16. ????}??
  17. void?callFunc()?{??
  18. ????????CCLuaStack*?pStack?=?CCLuaEngine::defaultEngine()->getLuaStack();??
  19. ????????pStack->pushInt(123);??
  20. ????????pStack->executeFunctionByHandler(this->invokeHandler,?1);??
  21. void?sayHello()?{??
  22. ????????CCLog("Hello,?world!");??
  23. static?void?classInfo()?{??
  24. ????????CCLog("This?class?is?MyTest");??
  25. void?otherFunc()?{??
  26. ????????//This?function?doesn't?expose?to?the?lua??
  27. };??
  28. #endif??
把MyTest.cpp中要暴露的方法,整合到MyTest.pkg中,如下:
copy
    public?CCLayer?{????
  1. ????static?MyTest*?create();??
  2. ??????
  3. void?setHandler(LUA_FUNCTION?_handler)?;??
  4. void?callFunc()?;??
  5. void?sayHello()?;??
  6. void?classInfo()?;??
  7. };??
注意点:1)由于pkg中不识别宏,所以要把CREATE_FUNC ( MyTest );展开成 static MyTest* create(); ?
2)回调函数虽然是指针类型(也就是一个int), 但是在pkg中要声明成LUA_FUNCTION这一自定义类型。然后在cocos2dx的一个扩展中(可以在basic.lua文件中找到)对其进行处理。
在eclipse中创建lua工程,并引用xcode中的pkg文件夹。如下图:




最终效果如下:


右击选择TextEditor,可以打开MyTest.pkg进行编辑。


保持MyTest.pkg为选择状态,然后点击工具栏上的luaMaker。将在pkg文件夹下生成MyTest.pkg.cpp文件。

在xcode中把MyTest.pkg.cpp文件拖到工程中,如下图:


在MyTest.pkg.cpp中加入头文件:
copy
    #include?"MyTest.h"??

拷贝MyTest.pkg.cpp中的tolua_MyTest_open函数的声明到MyTest.h中。
copy
    /*?Exported?function?*/??
  1. TOLUA_API?int??tolua_MyTest_open?(lua_State*?tolua_S);??
并在MyTest.h中引入下面的头文件:
copy
    extern?"C"?{??
  1. #include?"tolua++.h"??
  2. #include?"tolua_fix.h"??
  3. }??
  4. #include?"CCLuaEngine.h"??

在游戏启动代码中注册自定义的c++函数,使这些函数能够在lua中被使用。
在AppDelegate.cpp 中引用头文件MyTest.h;并在appicationDidFinishLaunching方法中加入如下代码:
[cpp]? view plain copy
    tolua_MyTest_open(pEngine->getLuaStack()->getLuaState());??
编译一下。OK,完成之后,我们编写的c++端的代码,通过tolua_MyTest_open被注册到了lua环境下了。接下来的事情就是编写lua端代码了。
切换到Eclipse下,和上面的方法一样,在Eclipse中引入xcode项目中的Resources目录,如下图:


双击打开hello.lua,?在main函数中加入如下代码:
copy
    cclog("====test?static?method=====");??
  1. MyTest:classInfo();??
  2. cclog("====test?member?function========");??
  3. local?mt?=?MyTest:create();??
  4. mt:sayHello();??
  5. cclog("====test?callback?function=====");??
  6. local?function?callback(num)??
  7. ????cclog("This?is?the?function?from?lua,?and?param?is:?"?..?num);??
  8. end??
  9. mt:setHandler(callback);??
  10. mt:callFunc();??
结果如下:


准备工作做好之后,接下来在MyTest文件中添加函数的工作就很简单了。
1)在eclipse中修改pkg文件,选中其文件,执行luaMaker命令;
2)在xcode中打开MyTest.pkg.cpp,加入MyTest.h头文件,编译;
3)在eclipse中,编辑lua文件,使用新加入的函数。
OK,enjoy yourself。
如果遇到编码问题,请右击文件-》properties;在弹出的对话框中选择编码,如下图:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读