使用cocos2d脚本生成lua绑定

  次阅读 作者:智能小宝 来源:互联网 2015-09-27 15:30 我要评论(0)

这几天要老大要求把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这个文件就大约知道这个脚本创建的过程是怎么映射的

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...