使用cocos2d脚本生成lua绑定
这几天要老大要求把DragonBones移到cocos2dx 3.0 里边,并且绑定lua使用接口。因为刚学lua,使用的引擎也刚从2.2改为3.0,各种不熟悉,折腾了好几天才弄完,有空了总结一下
这篇先说一下cocos2d生成lua绑定的修改,有空的话再写一篇lua中注册回调到c++中方法
我的目录结构
假设我的目录名称是DragonBones
- -Cocosdx目录
- -DragonBones
- -c代码
- -c代码头
- -tools
- db_DragonBones.ini
- genbindings.py
- -scripting
这个目录是用来存放自动生成的文件的
genbindings.py中的修改
project_root 项目路径 这里我要把DragonBones目录设置为项目路径,但是我的脚本运行目录是在tools下的 所以设置如下
project_root = os.path.abspath(os.path.join(os.path.dirname(file), '..'))
cocos_root 设置coco2dx项目的路径
cocos_root = os.path.abspath(os.path.join(project_root, '..', 'cocos2d-x'))
设置解析脚本路径 这个路径主要是用来配置cocos2d-x/tools/bindings-generator/generator.py 文件路径的
cxx_generator_root = os.path.abspath(os.path.join(cocos_root, 'tools/bindings-generator'))
这个是设置配置文件路径 其实就是db_DragonBones.ini的路径 和当前.py文件在同一个目录下
script_root = '%s/tools' % project_root
设置生成文件的目录 就是生成的那些.hpp 和.cpp 以及lua的路径
output_dir = '%s/scripting/lua-bindings/auto' % project_root
要生成lua绑定的源文件参数
cmd_args = {
'db_DragonBones.ini' : ('db_DragonBones', >'lua_DragonBones_auto'),
}- db_DragonBones 这个参数不知道做什么用的,但是要保证和db_DragonBones.ini内第一行中括号里的名字一样 一般和 ini文件名相同
- lua_DragonBones_auto 定义生成的hpp 和 cpp的文件名
ini文件中的修改
方法前缀
prefix = db_DragonBones
lua里要用到的名称空间 其实就是要把绑定的类放在一个叫db的表里,防止和别的绑定的方法或类冲突
target_namespace = db
native代码中的原名称空间
cpp_namespace = dragonBones
这里得注意一下,这个加上之后发现native中 dragonBones命名空间下的方法没有转成在lua中的db 原因是因为需要在cocos2d-x/tools/bindings-generator/targets/lua/conversions.yaml 内加入名称空间的转换
ns_map:
"dragonBones::": "db."头文件 这个里边要include了所有要暴露方法的头文件 参考目录是cocos2dx的目录来设置头文件目录
headers = %(cocosdir)s/../headers.h
要生成的类 需要暴露给lua用的类都要写在这里
classes = AnimationData ...
要跳过不生成lua接口的的方法 我这里是重载等号操作符有问题,在说本来在lua里边也不会这么调用,不如过改个方法名实现类似的功能来做
skip = AnimationData::[operator=],
设置的都差不多了
这里不得不提的是,看一下conversions.yaml这个文件就大约知道这个脚本创建的过程是怎么映射的
最重要的一句话,暴露给lua的接口和类尽量简单,这个中间的问题越少
因为你不注意的话,有写接口编译什么的没问题,lua调用的时候,会告诉你找不到
使用cocos2d脚本生成lua绑定的更多相关文章
- QFramework 使用指南 2020 (四):脚本生成(2)ViewController 与 ViewController 嵌套绑定
在上一篇,我们学习了,脚本生成的基本使用. 在这一篇,我们试着深入,聊聊脚本生成给我们带来的便利. 脚本生成的便利 首先,我们要知道,在 Unity 的游戏世界中都是以 GameObject 为单位的 ...
- cocos2dx的lua绑定
一.cocos2dx对tolua++绑定的修正 A.c对lua回调函数的引用 在使用cocos2dx编写游戏时,我们经常会设置一些回调函数(时钟.菜单选择等).如果采用脚本方式编写游戏的话,这些回调函 ...
- c/c++导出lua绑定
[转载]https://note.youdao.com/share/?id=0f4132271151c4b62f9afb712e8304d9&type=note#/ 1.在纯C环境下,把C函数 ...
- c++自动导出lua绑定
cocos 使用bindings-generator脚本代替了toLua++. 编写效率大大提高. 具体的在本机中分享:http://note.youdao.com/noteshare?id=0f41 ...
- Cocos2d-x v3.3 lua绑定c++类方法总结
网上有很多cocos2d-x lua绑定c++类的接口教程,这篇文章也是总结他们的经验. 其中重点参考了 http://cn.cocos2d-x.org/tutorial/show?id=1295, ...
- 生成lua的静态库.动态库.lua.exe和luac.exe
前些日子准备学习下关于lua coroutine更为强大的功能,然而发现根据lua 5.1.4版本来运行一段代码的话也会导致 "lua: attempt to yield across me ...
- 用VC编译lua源码,生成lua语言的解释器和编译器
用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...
- cocos2dx lua 绑定之二:手动绑定自定义类中的函数
cococs2dx 3.13.1 + vs2013 + win10 1.首先按照<cocos2dx lua 绑定之一:自动绑定自定义类>绑定Student类 2.在Student类中增加一 ...
- Cocos2d-x 脚本语言Lua中的面向对象
Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类 ...
随机推荐
- AngularJS 动画总结
对读过的几篇文章的总结,尽量保证逻辑性,不断补充.精简.更正. 后面会列出参考文章地址,方便以后取用.感谢各位作者以及翻译者. AngularJS 动画思考 一.如何使用 1)我们需要构建什么 2)如 ...
- WeQuant交易策略—网格交易
网格交易策略(Grid Trading) 策略介绍 网格策略本质上是一种低吸高抛的策略.标的物价格越低,吸纳的头寸越多:标的物价格越高,卖出的头寸越多.网格策略巧妙地借鉴了日常生活中渔翁撒网扑鱼的思路 ...
- 并发是个什么鬼之同步工具类CountDownLatch
扯淡 写这篇文章,我先酝酿一下,实不相瞒,脱离底层太久了,更确切的情况是,真没曾认真研究过.就目前来说,很多框架包括工具类已经把实现封装的很深,你只需轻轻的调用一下API,便不费半点力气.以至于大家会 ...
- (转)新手写爬虫v2.5(使用代理的异步爬虫)
开始 开篇:爬代理ip v2.0(未完待续),实现了获取代理ips,并把这些代理持久化(存在本地).同时使用的是tornado的HTTPClient的库爬取内容. 中篇:开篇主要是获取代理ip:中篇打 ...
- python增量爬虫pyspider
1.为了能够将爬取到的数据存入本地数据库,现在本地创建一个MySQL数据库example,然后 在数据库中建立一张表格test,示例如下: DROP TABLE IF EXISTS `test`; C ...
- 灾难恢复-boot分区的恢复方法
boot分区是系统启动中最重要的部分,如果服务器由于病毒攻击又或者被管理员误删除了boot分区.那么就会存在潜在的风险.为什么说是潜在的风险?因为boot分区被删除后系统仍在继续运行,看似无状况但是在 ...
- Centos 7系统启动修复
author:JevonWei 版权声明:原创作品 错误界面 这个错误界面应该为/boot文件损坏,故应该修复/boot和grub2 修复/boot及grub 1 . chroot /mnt/sysi ...
- Java笔记—— 格式化的输入和输出
精确输出 可以用8个字符的宽度和小数点后了两个字符的精度打印x. double x = 10000.0 /3.0; System.out.printf("%8.2f\n",x);/ ...
- 改造百度ueditor字体为rem及相关体会
提到富文本,可能大家都用到过百度的ueditor,作为一个重量级的插件,总结起来一句话,功能很强大,使用很费心.不知道是不是太久没有维护了,ueditor的文档可读性还真是差也可能是悟性不够吧.本文也 ...
- 自制裸眼3D图【推荐】
Welcome to the World of Hidden 3D Stereograms.欢迎进入隐身3D图的世界! 网址:http://hidden-3d.com 裸眼立体图是什么? 立体图是立体 ...