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%,大家看看看看下面两张图:
这是在 Creator 中编辑的场景。地图本身是单张 PNG,里面的建筑和船,是用 Texture Packer 打包好的 Sprites Sheet。
在 Lua 里实际跑起来的效果:
如果仔细看,会发现运行效果和编辑器里的内容有点差异。这也是当前需要解决的问题之一。为了完成第一阶段目标,我做了以下这些工作:
写了一个转换器,将 Creator 输出的项目数据转换为 Lua 格式,以便在 Lua 里可以快速加载;
写了一个 Lua 框架,完成读取和重建场景的工作。
要使用这个转换器,首先需要在 Creator 中保存场景,然后选择输出项目:
输出的结果,通过转换器进行转换。转换器目前需要用命令行方式执行:
$ 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 组件(目前仅支持帧动画)
组件对象生命周期事件
修复了组件对象生命周期事件的一些问题。做了一个简单的示例:
这个场景全部在 Creator 中创建,而添加逻辑的代码相当简单:
-- 从场景中查找名为 MyShip 的对象
local ship = creator.find(scene, "MyShip")
-- 添加一个组件
ship:addComponent(ShipAI.new())
ShipAI 是 Lua 脚本:
这段脚本每隔 0.1 秒就发射一颗炮弹。炮弹也是 Prefab,绑定的脚本则是 CannonBall01AI:
【5月9日更新】
增加组件生命周期支持:
onLoad
start
stop
onDestroy
update
增加 createPrefab() 接口
【5月6日更新】
修复了 Widget 组件对 Anchor Point 的支持。
增加了 Animation 组件,支持基本的帧动画。
关于发布计划,目前暂定的是5月底发布测试版本,6月份发布正式版。
谢谢兄弟姐妹们看到最后,我去赶工啦。
PS:更多资讯和源码、资源,请点击“阅读原文”哦!
以上是关于Lua党看过来|Cocos Creator 即将支持Lua!的主要内容,如果未能解决你的问题,请参考以下文章
8月23日Cocos斗鱼直播:廖大带你激情驾驭 Creator 与 Lua
官方插件 | C++ and Lua for Creator 0.4 版发布