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绑定代码,我们可以仿照引擎中的方法来做.值得吐 ...
随机推荐
- gucci fake bags is usually really a sign of luxurious
As soon as the violent trembling from the planet, standing company, people will certainly need to st ...
- Java 设计模式学习
看完headfirst设计模式,简单总结一下. 写在最前面:设计模式的关心的问题为"弹性.易于维护.易于扩展",通过对模式的应用,让自己的代码能够得到良好的可塑性.但是个人认为不能 ...
- HTML <label> 标签
定义:<label> 标签为 input 元素定义标注(标记). 用法: label 元素不会向用户呈现任何特殊效果.不过,它为鼠标用户改进了可用性.如果您在 label 元素内点击文本, ...
- Unreal Engine Plugin management
Be aware to remove any dependencies to any modules related to Editor, or else it will end up with fa ...
- maven 下载 源码和javadoc 命令
摘要:我们在写代码时候,往往是想查看一下源码,看看源码的一些细节内容.一般情况下,在IDE(如eclipse)中近仅仅只需按住ctrl+ 点击对应的方法即可进入对应的源码部分.但是有些时候很多依赖项并 ...
- Junity测试最大子数列和的Java程序
1.Java环境的安装与配置: Jdk的安装: Jdk下载链接:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-13 ...
- display:none与visibility:hidden区别
display:none与visibility:hidden有一个共同的作用是隐藏要显示的内容isplay:none 隐藏,但是不占空间 “看不见摸不到” 加载 display:none 隐藏,但是不 ...
- PKU1008
题名:玛雅历 题意:历法转换 . 代码: // 1008.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iost ...
- esxi 6 虚拟机安装复制
打开VMware vSphere Client 连接到esxi服务器,选择配置-存储器, 右击存储器标识,选择浏览存储数据, 首先新建一个文件夹,用来存放系统镜像,这里新建了iso文件夹, 选择iso ...
- mac下安装和配置mysql5.7.9
我安装的是5.7.9版本的sql 一开始在网上看到的都是其他版本的安装,弄得自己卸载了好几次 mysql就只有一个dmg主文件,安装这一个就好了. 5.7以后安装的mysql不再使用旧版的默认密码:r ...