cocos2dx 3.x tolua 分析
cocos2dx 3.x 版本已经出到3.10了,终于决定要进行引擎版本升级,c++配合lua进行游戏开发,从3.x版本开始cocos使用了新的tolua方式,由于不懂python,折腾tolua搞的心累,网上各种百度搜索了半天也不见一个系统的教程,在这里我把这两天的工作总结下,希望有碰到同样问题的朋友能够快速解决。
先说下,系统Mac OS 10.10,cocos引擎版本3.10,ndk使用r10e,python2.7.
1、配好环境变量,NDK_ROOT,COCOS2D-X相关的环境变量自行配好,由于r10e里面只有llvm3.5和3.6,并没有llvm3.3和3.4,所以我从r9d里面把llvm3.3和3.4copy到了r10e相应目录下,这个务必拷贝齐全,要不然各种坑。
2、创建cocos2dx-lua项目,先看下游戏项目目录:

要进行tolua需要修改的就是最后一个目录下的*.ini文件和genbindings.py,这里还需要注意一下userinfo.ini文件,这个是工程相关的一些配置,看下里面的内容

这些内容其实是运行下图红圈中的文件生成的

理一下执行顺序,运行第一步里面的genbindings.py首先会检查环境变量。然后向userinfoconf.ini写入相关路径的配置,最后调用generator.py生成tolua的c++文件。
3、为了使目录结构清晰,自定义的c++类肯定需要放在项目的Classes文件夹下面,Classes文件夹在整个项目工程的位置看下图:

再看下在genbindings.py里面设置的路径

这里最高的层级路径只是到了cocos2d-x这个文件夹,为了在自定义类里面方便的配置头文件路径,在这里,添加一个路径配置,如上图的customclass_root,这个路径就是整个项目的根路径,它的下一级文件夹就是frameworks这一级,这样,在添加Classes里面的自定义类的时候就方便了(解释下配置里的那四个'..',如果不添加这个四个,路径就是在第一幅图的tolua文件夹,加上就是向上返回四级目录,刚好就是项目文件夹跟目录)。
4、在Classes里面添加自定义类myclass,第三部步第一幅图里面看到的那样,里面内容很简单:
头文件:
实现文件:
然后就需要去修改相应的配置文件了首先需要添加一个myclass的ini配置文件,然后修改genbindings.py,这里建议是重新抄一份genbindings.py出来,里面只添加自定义的类,这样就不会影响到引擎本省的一些类的tolua,具体怎么修改请参看http://www.cocoachina.com/bbs/read.php?tid=196416,我也是参看这篇教程摸索出来的,容易出问题的部分就是自定义类的头文件那里,在第三步的时候我自定义了一个项目的根路径,这样在添加头文件路径时就方便很多:

这里的projectdir就是第三步的customclass_root,在存到userinfoconf.ini里面使用的key是projectdir,具体可以参看第三步的图,最后在执行抄过来的genbindings.py,我自己的是genbindings_myclass.py,就可以了,最后看下生成的userinfoconf.ini:

tolua文件的生成路径在上面的链接教程里面有说,需要的朋友自己去看下。
cocos2dx 3.x tolua 分析的更多相关文章
- cocos2d-x 纹理源码分析
转自:http://blog.csdn.net/honghaier/article/details/8068895 当一张图片被加载到内存后,它是以纹理的形式存在的.纹理是什么东西呢?纹理就是一块内存 ...
- cocos2dx中使用tolua++使lua调用c++函数
一直想学学cocos2dx中如何使用tolua++工具使得lua脚本调用C++函数,今天就来搞一下,顺便记录下来: 首先,我们打开cocos2dx-2.2.4中projects下的test的VS工程, ...
- cocos2d-x多分辨率适配原理分析(2.0.4之后的版本)
2013年11月4日补充: 之前写这篇博客的时候其实我还没有开始过真正的去做一个项目,主要过程还是偏向于理解原理.前几天在准备练练手时回过头来想了下这个问题,发现又有点一头雾水了,所以我觉得之前我并没 ...
- [置顶] Cocos2d-x 实例源码分析之二 小实例的主框架
这篇文章是分析第一个小实例ActionTest的源码.其实所有实例程序的结构都是一样的,只有特定方法里的代码不同,大的框架都是一样的.也就是说看完这篇文章你就可以自己开始分析其他源码了. 废话不多说, ...
- cocos2dx的lua绑定
一.cocos2dx对tolua++绑定的修正 A.c对lua回调函数的引用 在使用cocos2dx编写游戏时,我们经常会设置一些回调函数(时钟.菜单选择等).如果采用脚本方式编写游戏的话,这些回调函 ...
- `cocos2dx非完整` 添加xxtea加密模块
在上一篇文章中,我已经开始着手写自己的模块,也就是fw部分.其中上一篇文章中完成的是lua部分的配置解析部分,涉及一点点平台方面的封装.这一片文章我来说明一下我是如何处理cocos2dx资源加密的.首 ...
- Cocos2d-x 程序是如何开始运行与结束的
题记:对于技术,我们大可不必挖得那么深,但一定要具备可以挖得很深的能力 问题的由来 怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起 ...
- 【转】Cocos2d-x 程序是如何开始运行与结束的
转自:http://blog.leafsoar.com/archives/2013/05-05.html 题记:对于技术,我们大可不必挖得那么深,但一定要具备可以挖得很深的能力 问题的由来 怎么样使用 ...
- cocos2d-x 2.2.0 如何在lua中注册回调函数给C++
cocos2d-x内部使用tolua进行lua绑定,但是引擎并没有提供一个通用的接口让我们可以把一个lua函数注册给C++层面的回调事件.翻看引擎的lua绑定代码,我们可以仿照引擎中的方法来做.值得吐 ...
随机推荐
- 关于TortoiseGit使用的心得
花了我一个晚上,终于弄明白为什么总是 push 失败的原因了!竟然是因为我用的是注册的用户名而不是邮箱名……囧死. 另外搞清楚了一个问题,就是 Git 和远程仓库交互有两种方式,即 https 方式和 ...
- unicode编码与utf-8 区别
unicode编码与utf-8 区别 如果是为了跨平台兼容性,只需要知道,在 Windows 记事本的语境中: 所谓的「ANSI」指的是对应当前系统 locale 的遗留(legacy)编码.[1] ...
- java基础之 重排序
重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段.重排序分为两类:编译期重排序和运行期重排序,分别对应编译时和运行时环境. 在并发程序中,程序员会特别关注不同进程 ...
- Configure the max limit for concurrent TCP connections(转)
To keep the TCP/IP stack from taking all resources on the computer, there are different parameters t ...
- rails 常用的验证方法 validates (转)
Agile Web Development with Rails 17.4 validation validate 在save的时候激活validate_on_create ...
- 第五章 搭建S3C6410开发板的测试环境
在PC上可以开发Linux驱动,重新编译成ARM架构的Linux驱动模块,但最后还是要在开发板上进行测试.目前最流行的是基于三星S3C6410 ARM11架构的开发板,很多厂商在其基础上进行了扩展,开 ...
- LINUX二十个基础命令
LINUX二十个基础命令 一. useradd命令 1.命令格式: useradd 选项 用户名 2.命令功能: 添加新的用户账号 3.常用参数: -c comment 指定一段注释性描述.-d 目录 ...
- c# txt文件的读写
在公司实习,任务不太重,总结一下c#关于txt文件的读写,以便以后有用到的时候可以查看一下.如果有写得不完整的地方还请补充 说明:本人C#水平可能初级都谈不上,高手轻喷,参考:http://www.c ...
- jquery 甘特图开发指南
JQuery.Gantt是一个开源的基于JQuery库的用于实现甘特图效果的可扩展功能的JS组件库. <link rel="stylesheet" href="cs ...
- 关于C语言编译器Dev c++的调试
大家应该都安装了C语言的编译软件,不过我个人认为Dev C++比VC6.0好用,所以只是说明DEv C++软件的调试方法 如果英文不好的,可以先汉化,再调试. 汉化:工具-----环境选项------ ...