cocos2dx 3.1 cpp版本转lua版本 mac

cocos2dx 3.1 cpp版本转lua版本 mac,第1张

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

项目最开始使用的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也审核不过啊。所以@R_502_5561@后,在这个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了,所以找不到。。。

总结

以上是内存溢出为你收集整理的cocos2dx 3.1 cpp版本转lua版本 mac全部内容,希望文章能够帮你解决cocos2dx 3.1 cpp版本转lua版本 mac所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1045252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存