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 分析的更多相关文章

  1. cocos2d-x 纹理源码分析

    转自:http://blog.csdn.net/honghaier/article/details/8068895 当一张图片被加载到内存后,它是以纹理的形式存在的.纹理是什么东西呢?纹理就是一块内存 ...

  2. cocos2dx中使用tolua++使lua调用c++函数

    一直想学学cocos2dx中如何使用tolua++工具使得lua脚本调用C++函数,今天就来搞一下,顺便记录下来: 首先,我们打开cocos2dx-2.2.4中projects下的test的VS工程, ...

  3. cocos2d-x多分辨率适配原理分析(2.0.4之后的版本)

    2013年11月4日补充: 之前写这篇博客的时候其实我还没有开始过真正的去做一个项目,主要过程还是偏向于理解原理.前几天在准备练练手时回过头来想了下这个问题,发现又有点一头雾水了,所以我觉得之前我并没 ...

  4. [置顶] Cocos2d-x 实例源码分析之二 小实例的主框架

    这篇文章是分析第一个小实例ActionTest的源码.其实所有实例程序的结构都是一样的,只有特定方法里的代码不同,大的框架都是一样的.也就是说看完这篇文章你就可以自己开始分析其他源码了. 废话不多说, ...

  5. cocos2dx的lua绑定

    一.cocos2dx对tolua++绑定的修正 A.c对lua回调函数的引用 在使用cocos2dx编写游戏时,我们经常会设置一些回调函数(时钟.菜单选择等).如果采用脚本方式编写游戏的话,这些回调函 ...

  6. `cocos2dx非完整` 添加xxtea加密模块

    在上一篇文章中,我已经开始着手写自己的模块,也就是fw部分.其中上一篇文章中完成的是lua部分的配置解析部分,涉及一点点平台方面的封装.这一片文章我来说明一下我是如何处理cocos2dx资源加密的.首 ...

  7. Cocos2d-x 程序是如何开始运行与结束的

    题记:对于技术,我们大可不必挖得那么深,但一定要具备可以挖得很深的能力   问题的由来   怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起 ...

  8. 【转】Cocos2d-x 程序是如何开始运行与结束的

    转自:http://blog.leafsoar.com/archives/2013/05-05.html 题记:对于技术,我们大可不必挖得那么深,但一定要具备可以挖得很深的能力 问题的由来 怎么样使用 ...

  9. cocos2d-x 2.2.0 如何在lua中注册回调函数给C++

    cocos2d-x内部使用tolua进行lua绑定,但是引擎并没有提供一个通用的接口让我们可以把一个lua函数注册给C++层面的回调事件.翻看引擎的lua绑定代码,我们可以仿照引擎中的方法来做.值得吐 ...

随机推荐

  1. 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 ...

  2. Java 设计模式学习

    看完headfirst设计模式,简单总结一下. 写在最前面:设计模式的关心的问题为"弹性.易于维护.易于扩展",通过对模式的应用,让自己的代码能够得到良好的可塑性.但是个人认为不能 ...

  3. HTML <label> 标签

    定义:<label> 标签为 input 元素定义标注(标记). 用法: label 元素不会向用户呈现任何特殊效果.不过,它为鼠标用户改进了可用性.如果您在 label 元素内点击文本, ...

  4. Unreal Engine Plugin management

    Be aware to remove any dependencies to any modules related to Editor, or else it will end up with fa ...

  5. maven 下载 源码和javadoc 命令

    摘要:我们在写代码时候,往往是想查看一下源码,看看源码的一些细节内容.一般情况下,在IDE(如eclipse)中近仅仅只需按住ctrl+ 点击对应的方法即可进入对应的源码部分.但是有些时候很多依赖项并 ...

  6. Junity测试最大子数列和的Java程序

    1.Java环境的安装与配置: Jdk的安装: Jdk下载链接:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-13 ...

  7. display:none与visibility:hidden区别

    display:none与visibility:hidden有一个共同的作用是隐藏要显示的内容isplay:none 隐藏,但是不占空间 “看不见摸不到” 加载 display:none 隐藏,但是不 ...

  8. PKU1008

    题名:玛雅历 题意:历法转换 . 代码: // 1008.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iost ...

  9. esxi 6 虚拟机安装复制

    打开VMware vSphere Client 连接到esxi服务器,选择配置-存储器, 右击存储器标识,选择浏览存储数据, 首先新建一个文件夹,用来存放系统镜像,这里新建了iso文件夹, 选择iso ...

  10. mac下安装和配置mysql5.7.9

    我安装的是5.7.9版本的sql 一开始在网上看到的都是其他版本的安装,弄得自己卸载了好几次 mysql就只有一个dmg主文件,安装这一个就好了. 5.7以后安装的mysql不再使用旧版的默认密码:r ...