cocos2dx 3.1 cpp版本转lua版本 mac

前端之家收集整理的这篇文章主要介绍了cocos2dx 3.1 cpp版本转lua版本 mac前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

项目最开始使用的c++开发,第一版上线后总结经验,感觉走了很多弯路,所以第二版开发我决定将项目转成lua。使用c++开发主要遇到这几个麻烦:一,招人不易,我们是小公司,没法用土豪公司的待遇福利来吸引熟手,只能招实习生或刚毕业的,这部分人c++又不是很熟练,写出来的代码难免有各种问题,而找个会写lua的就简单多了。二,c++的强大可较好的体现在架构上,可以方便运用各种设计模式,但我们项目开发时间紧,架构几乎没有,所以c++的优势反而不如lua体现的好。三,最重要的一点,热更新啊。。。第一版没有代码热更新,各种发版本,各种玩家流失,多么痛的领悟

在转lua的过程中主要有三点问题:一,tolua的使用。二,luajit对64位机器的支持。三,转android

一,tolua的使用

tolua工具在cocos/tools/tolua目录下面

1.按照README.mdown文件中的说明,一步步安装所需环境组件

2.修改genbindings.py中的output_dir和cmd_args,output_dir是生成的tolua文件的位置,如图

3.新建自己的ini文件(参考其他的ini文件),ini文件名和上图中的1相同,第一行的名字要和上图中的2相同,然后其他参数都有详细说明,可按需配置,用不到的置空即可。我用到的配置参数如下图


4.运行genbindings.py脚本生成.h .cpp文件,加入到工程中,最后在加载lua文件前别忘了注册你导出的lua接口,如下图


二,luajit对64位机器的支持

3.1版本的luajit还没有支持64位机器,包括arm64,x86_64,使用iphone6,6plus真机和模拟器时链接各种报错,使用ipone5倒是可以,可就这么打得包appstore也审核不过啊。所以google后,在这个blog找到了答案点击打开链接,这里面说的很详细了,我补充一句,在other linker flags中增加参数 -pagezero_size 10000 -image_base 100000000按下图配置即可。

三,转android

已完成,可能过程对其他项目参考价值不是很大,因为我是通过研究build_native.py脚本,然后修改几个参数,修改android.mk等等,这里就不赘述了,如有兴趣,可留言

过程中遇到了几个错误

一,[LUA ERROR] [string "require "DeprecatedEnum.lua""]

这是因为cocos引擎用到的lua脚本没有复制到asset目录下,打开编译android的脚本文件(我用到的是build_native.py),在copy_resources函数添加复制lua资源的代码,记得后面的路径改成自己项目的相对路径

    common_script_dir = os.path.join(app_android_root,"../../../frameworks/cocos2d-x/cocos/scripting/lua-bindings/script")
    copy_files(common_script_dir,assets_dir)

    luasocket_script_dir = os.path.join(app_android_root,"../../../../frameworks/cocos2d-x/external/lua/luasocket")
    for root,dirs,files in os.walk(luasocket_script_dir):
        for f in files:
            if os.path.splitext(f)[1] == '.lua':
                fall = os.path.join(root,f)
                shutil.copy(fall,assets_dir)
二,dvmFindClassByName rejecting 'org.cocos2dx.cpp.AppActivity'

原因是通过jni调用java函数时没有找到org.cocos2dx.cpp.AppActivity的类,因为我的包名已经改成org.coco2dx.lua了,所以找不到。。。

原文链接:https://www.f2er.com/cocos2dx/344178.html

猜你在找的Cocos2d-x相关文章