问题:

开发cocos2dx手游
Cocos2dx+lua合适还是Cocos2dx+js合适

百牛信息技术bainiu.ltd整理发布于博客园

回答:

作者:廖宇雷
链接:https://www.zhihu.com/question/21130385/answer/18485625
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2014.02更新:请放心选择 Lua 吧。触控已经收购了 quick-cocos2d-x,2014年肯定会大力强化 cocos2d-x 的 Lua 支持。

----

我个人肯定是推荐 Lua 的,原因如下:

1. 运行效率:Lua 的性能在各种测试里都比 JavaScript 快不少。而移动设备上存在不支持 JIT 的情况(未越狱的 iOS 设备),Lua 对比 JavaScript 的性能优势就更明显。

2. 安全性:现在 cocos2d-x 使用 LuaJIT 来执行 Lua,所以可以把 Lua 代码编译为字节码再打包到游戏里。由于 LuaJIT 的字节码是高度优化过的,所以目前还没有反编译工具。而 JS 虽然也可以用字节码,但从目前的情况看还达不到 LuaJIT 的安全性。

3. 与 C/C++ 的交互:Lua 原本就是作为嵌入式语言来设计的,所以天然和 C/C++ 很容易交互。JS 这方面是个劣势。

4. 与 Java/Objective-C 的交互:不管是 quick-cocos2d-x 里提供的 luaoc/luaj 模块,还是 wax, luajava 这些开源项目,都让我们可以绕过 C/C++ 层实现 Lua 和 Java/Objc 的交互。这个优势在游戏发行阶段,集成各种第三方 SDK 时绝对会节约巨量时间!!!

----------------------------------------

当然,cocos2d-x 目前明显是在主推 JS 的解决方案,因为 JS 可以跨越移动设备、桌面的界限,实现一套程序跑任意平台。不过我个人认为以当前 HTML5 的发展情况,对于要强调体验的游戏来说,HTML5 还要一些时间。

从目前的市场情况来说,Lua 明显是更理性的选择:成熟、安全性高、众多大作采用。

----------------------------------------

前面提到 JS 更容易面向对象,我想可能是因为大家对 Lua 还不够了解造成的错觉。实际上,Lua 和 JS 实现面向对象的机制几乎是一样的。JS 基于 prototype,Lua 基于 metatable,在我看来仅仅是名字不同而已。

----------------------------------------

最后,不得不向大家推荐 quick-cocos2d-x 这个基于 cocos2d-x + Lua 的扩展版。quick 在 cocos2d-x + Lua 的基础上提供了诸多简化开发的扩展功能,以及开发框架。

quick-cocos2d-x 中文站: http://cn.quick-x.com/

最新文章

  1. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(四)-使用Travis自动部署Hexo(2)
  2. 视区相关单位vw, vh..简介以及可实际应用场景
  3. KnockoutJS 3.X API 第四章 表单绑定(6) click绑定
  4. ASP.NET MVC4 执行流程
  5. Effective C++ -----条款49:了解new-handler 的行为
  6. AngularJS 的数据绑定
  7. PHP5 Session 使用详解(一)
  8. MVC 扩展方法特点
  9. js对象2--工厂模式的由来--杂志
  10. react native web
  11. IOS获取经度纬度
  12. 对本地Solr服务器添加IK中文分词器实现全文检索功能
  13. MyEclipse 护眼配色
  14. shell入门之函数应用
  15. 记录安装 java 环境,部署环境变量遇到的小坑
  16. PropTypes使用
  17. 有关Set集合的一个小问题
  18. 1.3currentThread()方法
  19. javascript之彻底理解valueOf, toString
  20. C++解析(24):抽象类和接口、多重继承

热门文章

  1. Codevs1062路由选择
  2. Linux下使用Shell命令控制任务Jobs执行(转)
  3. android 获得电池状态
  4. WIN7实现多用户远程桌面
  5. Go -- PipleLine
  6. Shiro源代码分析之两种Session的方式
  7. [转]java中的字符串相关知识整理
  8. Java学习之基本概念
  9. 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
  10. startActivity、 startActivityForResult 、广播的使用