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绑定代码,我们可以仿照引擎中的方法来做.值得吐 ...
随机推荐
- druid.properties的配置
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://NoOne:3306/eyes<!--需修改--> username=root ...
- 自顶而下设计FPGA
对IC设计而言,FPGA设计层级大致包括:系统级和行为级,RTL级,门级和晶体管级.然而更普遍的情况,FPGA只是用作实时数据采集控制.某些快速处理算法.PCIe\DDR3等高速数据通道,甚至某些简单 ...
- maven项目管理利器
一.maven介绍及环境搭建 maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建.报告和文档的软件项目管理工具. maven可以更有效的管理项目,也是一套功能强大的自动化管 ...
- 关于ajax跨域请求(cross Domain)
Cross Domain AJAX主要就是A.com网站的页面发出一个XMLHttpRequest,这个Request的url是B.com,这样的请求是被禁止的,浏览器处于安全考虑不允许进行跨域访问, ...
- git中.gitignore配置项不起作用-解决办法
在某个git项目中,.gitignore忽略了*.iml,但是git status命令依然列了出来,最后发现是由于git的缓存造成的. git rm -r --cached . git add . g ...
- sql转db,后台坑货
打开 创建一个db文件然后点击文件--新建---Sqlite 导入空db成功后点击左侧栏 点击表 点击右上角+号把sql文件的语句复制粘贴到 然后点击运行,运行完成后保存ok
- struts2 错误提示页面
以前做的一个网站,最近服务器后台出现一些异常,问题是客户访问一个该网站下不存在的action,为了给客户一个友好的界面提示以及减小服务器端日志文件的内容.就在struts2下进行了如下配置: 在str ...
- .net core 学习笔记(1)-分页控件的使用
最近有个小项目,用.net core开发练练手,碰到的第一个问题就是分页控件的问题,自己写太费时间,上网查了下,发现有人已经封装好了的,就拿过来用了,分页控件github:https://github ...
- C语言程序设计第4堂作业
大家注意:本次作业稍有增加,由于放假期间大家空闲时间比较充足,将之前学习过程中遗留的问题必须在假期解决. 本次课学习主要内容: 分支结构中的二分支结构.多分支结构和else-if语句 掌握字符型数 ...
- 北大poj-2688
Cleaning Robot Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4395 Accepted: 1763 De ...