Lua党看过来|Cocos Creator 即将支持Lua!

Posted COCOS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua党看过来|Cocos Creator 即将支持Lua!相关的知识,希望对你有一定的参考价值。

廖大是Cocos2d-lua的老大,这是大家都晓得的。近日,廖大却不远千里飞来厦门,与Cocos Creator团队多位小鲜肉老腊肉整日厮混在一起,大门不出二门不迈,你知道为什么吗?


真相随着廖大今天的微博浮出水面:




喜!大!普!奔!有木有~下面我们赶紧把“话筒”交给廖大,请他来讲述Cocos Creator的 Lua 支持研发计划和最新进展。




大家好,我是廖宇雷。最近正在做 Creator 的 Lua 支持。这个项目暂命名为 Creator Lua-Support,后面就简称 luasupprot 了。


按照计划,luasupport 应该实现以下目标:


  • 在 Creator 中创建的场景可以在 Lua 中呈现

  • 在 Creator 中创建的 UI 界面可以在 Lua 中呈现并进行交互

  • 可以在 Creator 中组装 Lua 写的组件

  • 可以用 Lua 扩展 Creator 的功能


这四个目标实际上也是四个阶段。目前,第一阶段已经完成了 40%,大家看看看看下面两张图:


Lua党看过来|Cocos Creator 即将支持Lua!


这是在 Creator 中编辑的场景。地图本身是单张 PNG,里面的建筑和船,是用 Texture Packer 打包好的 Sprites Sheet。


在 Lua 里实际跑起来的效果:


Lua党看过来|Cocos Creator 即将支持Lua!


如果仔细看,会发现运行效果和编辑器里的内容有点差异。这也是当前需要解决的问题之一。为了完成第一阶段目标,我做了以下这些工作:


  • 写了一个转换器,将 Creator 输出的项目数据转换为 Lua 格式,以便在 Lua 里可以快速加载;

  • 写了一个 Lua 框架,完成读取和重建场景的工作。


要使用这个转换器,首先需要在 Creator 中保存场景,然后选择输出项目:


Lua党看过来|Cocos Creator 即将支持Lua!


输出的结果,通过转换器进行转换。转换器目前需要用命令行方式执行:


$ lua creator-js2lua.lua ../build/web-mobile ../../creator_lua


执行结果类似:


....

....

Read file ../build/web-mobile/res/import/39/39cbaf8a-c48a-46dd-a52e-5b2c4314b643.json

Read file ../build/web-mobile/res/import/0f/0f1841ff-6102-484d-91ce-27b1c27269c1.json

Read file ../build/web-mobile/res/import/31/31d3a7da-82c9-4bf5-818a-e01de18681a4.json

Read file ../build/web-mobile/res/import/38/38d5de77-d56a-4fcf-b05f-b4812dbdd4ec.json

Read file ../build/web-mobile/res/import/d3/d3de2b64-393b-4dc2-ad79-4752a2a88c66.json

Read file ../build/web-mobile/res/import/50/50a5325a-2531-4418-9dd8-626fa1bcac75.json

Read file ../build/web-mobile/res/import/a9/a9f8a282-f11f-4ede-86ef-9b53b109a173.json

Read file ../build/web-mobile/res/import/37/373304f0-f69d-4411-98d9-9044b0cbce31.json

Read file ../build/web-mobile/res/import/38/38a2ef98-357d-4ea3-b747-45367e20a468.json

Read file ../build/web-mobile/res/import/e6/e6be521d-3097-4a41-99a8-46f1e5bfff3d.json

Read file ../build/web-mobile/res/import/1c/1ccdc23c-9bcf-436c-bede-4e1e28d16370.json

Read file ../build/web-mobile/res/import/d9/d914f222-01c2-45e4-a9d9-ba64050b996d.json

Read file ../build/web-mobile/res/import/6b/6b7cee20-5f48-47cb-8747-43c5b8c67edf.json

Write file ../../creator_lua/src/assets/assetsdb.lua

Write file ../../creator_lua/src/assets/filesdb.lua

Copy file ../../creator_lua/res/raw-assets/Sprite/SheetMapBattle.png

Copy file ../../creator_lua/res/raw-assets/Sprite/MapA0002Bg.png


最后就可以在 Lua 中执行了。

以上所有代码可以在 github 下载。有兴趣的同学请点击文末的“阅读原文”。


后续开发计划


在第一阶段工作完成后,Lua 用户实际上就可以用 Creator 来做场景编辑器了。但 UI 还跑不起来。所以第二阶段的工作就是开发一个配合 Creator 的 Lua UI 库。


考虑到 Creator UI 控件很多,所以第二阶段工作需要分成两个部分。


5月底之前完成下列 UI 控件:


Canvas

Widget

Button

EditBox


第二批控件则包括 Mask, ProgressBar, ScrollView, ListView, Layout, 骨骼动画支持等,会在6月完成。


在我开发 UI 库的同时,Creator 团队的同事会完成在 Creator 中组装 Lua 组件等功能。但考虑到这部分功能的实现还需要技术攻关,所以暂时没有确切的开发计划。


下面具体汇报下目前的最新进展。


【5月10日更新】


目前支持的特性:


  • 在 Lua 中渲染 Creator 中创建的场景

  • 多分辨率适配组件 Canvas

  • 自动化布局组件 Widget

  • Sprite 组件

  • Label 组件(目前仅支持系统字体)

  • Animation 组件(目前仅支持帧动画)

  • 组件对象生命周期事件


修复了组件对象生命周期事件的一些问题。做了一个简单的示例:


Lua党看过来|Cocos Creator 即将支持Lua!


这个场景全部在 Creator 中创建,而添加逻辑的代码相当简单:


-- 从场景中查找名为 MyShip 的对象

local ship = creator.find(scene, "MyShip")

-- 添加一个组件

ship:addComponent(ShipAI.new())


ShipAI 是 Lua 脚本:


Lua党看过来|Cocos Creator 即将支持Lua!

Lua党看过来|Cocos Creator 即将支持Lua!


这段脚本每隔 0.1 秒就发射一颗炮弹。炮弹也是 Prefab,绑定的脚本则是 CannonBall01AI:


Lua党看过来|Cocos Creator 即将支持Lua!

Lua党看过来|Cocos Creator 即将支持Lua!

Lua党看过来|Cocos Creator 即将支持Lua!

【5月9日更新】

增加组件生命周期支持:

  • onLoad

  • start

  • stop

  • onDestroy

  • update

增加 createPrefab() 接口


【5月6日更新】

修复了 Widget 组件对 Anchor Point 的支持。


Lua党看过来|Cocos Creator 即将支持Lua!


增加了 Animation 组件,支持基本的帧动画。


Lua党看过来|Cocos Creator 即将支持Lua!


关于发布计划,目前暂定的是5月底发布测试版本,6月份发布正式版。

谢谢兄弟姐妹们看到最后,我去赶工啦。


PS:更多资讯和源码、资源,请点击“阅读原文”哦!


以上是关于Lua党看过来|Cocos Creator 即将支持Lua!的主要内容,如果未能解决你的问题,请参考以下文章

8月23日Cocos斗鱼直播:廖大带你激情驾驭 Creator 与 Lua

官方插件 | C++ and Lua for Creator 0.4 版发布

Creator与Lua的激情之夜:独乐乐不如众乐乐

新人第一次用cocos creator ,js文件保存后总是显示错误

quick cocos Lua与OC互相回调,苹果内购机制

Mac开发cocos2dx-lua用啥工具?