Cocos Creator

Cocos Creator 是以内容创作为核心的游戏开发工具,在 Cocos2d-x 基础上实现了彻底脚本化、组件化和数据驱动等特点。

当前最新版本:1.2

更新时间:2016年08月08日

更新日志:

产品介绍:

通过之前的 1.0 和 1.1 两个大版本我们补全了基本的工作流程和工具链,开发者已经具备了开发绝大部分游戏类型的可能。而在炎炎夏日中我们推出的 1.2 版本,则专注于 Web 引擎性能的提升,前几个月开始使用 Creator 开发游戏的朋友们现在在产品上线前可以获得一次免费的性能提升啦!
 

1. 版本亮点:
 

1.1HTML5
 

在Cocos Creator v1.2的版本中,我们投入了大量精力对HTML5性能进行优化。在无runtime的HTML5裸跑环境中,新版本Creator v1.2相比两个月前的v1.1:

  • WebGL性能提升5~10倍,主要得益于增加了WebGL上的自动批量渲染和自动剪裁功能
  • Canvas性能提升2倍,得益于该版本中增加的脏矩形功能
  • Web发布模式下,通过模块配置功能,使得引擎发布的体积缩小30%


2.Native
 

对于Native用户,我们在v1.2版本里终于完成了呼声最高的两个功能:

  • Lua支持,Lua支持,Luuuuuuuuuua支持!
  • AnySDK打包流程的支持。

 

3.通用
 

另外还有一些我认为比较突出的功能有:

  • 新增 cc.Graphics 图形绘制模块,跨HTML5和Native通用
  • 新增 WebView 控件
  • 增加了动画播放的回调事件,包括play, stop, pause, resume, lastframe,finished等
  • 对 Android 平台的渲染进行了优化,针对部分机型提升了性能


下面我给大家逐项介绍。


1.1 HTML5裸跑性能优化


WebGL


在 Cocos2d-x 3.11 和 3.12 两个版本里进行的 WebGL 批量渲染优化,目前在 Cocos Creator v1.2 版本里已经基本完成了整合,在包含了大量动态精灵图的 Bunnymark 项目中,Creator v1.2 相对 v1.1 版本的 WebGL 渲染性能提升了5倍。此外重构后的 Web 渲染模块还包括针对视窗进行自动剪裁,屏幕外面的精灵和文字现在不会再消耗渲染性能了,还能够支持任意尺寸的巨大 Tilemap 瓦片图等。


Canvas


除了WebGL,我们也在 Canvas 上增加了脏矩形算法的渲染优化,这能在静态场景带来2倍以上的性能提升,v1.2 新版本中对 Canvas 渲染模式默认开启脏矩形优化,如果您的场景包括很多动态内容,也可以通过 API 将脏矩形优化关闭。

对于脏矩形优化,我们用触控科技独家代理的顽石科技《二战风云H5》作为优化案例,可以看到在不同场景里,性能都得到了提升。
 


像下图这样堆砌了大量UI元素,又没有太多动画的世界场景,应用脏矩形后获得了最明显的帧率提升。

 



关于脏矩形优化的更多细节,请参考文档Creator脏矩形优化文档。要注意在Creator 1.2中,脏矩形默认处于开启状态。

 

1.2 Lua 支持预览版
 

对于社区里呼声最高的Lua支持,经过Quick-x作者廖宇雷和Creator开发团队两个月的努力,我们终于在这个版本里实现了!Lua 开发者现在可以使用 Cocos Creator 来搭建场景和 UI ,并在 Lua 游戏中调用、加载、正常显示和操作。



 

目前已完成的工作流程包括:
 

  • 在 Creator 中编辑静态场景(包括节点树和大部分内置控件)和项目资源
  • 构建发布成 Lua 输出格式
  • 通过官方转换工具将场景和资源输出成 lua 文件
  • 使用 cocos2d-x Lua 引擎的标准工作流程完成后续脚本编写和编译运行



当前版本支持的功能:
 

  • Sprite - 精灵:图像显示
  • Canvas - 画布:主要用于自动布局
  • Widget - 部件:可以配合 Canvas 设置自动布局和各种对齐方式
  • Button - 按钮:响应玩家操作
  • EditBox - 编辑框:用于玩家输入文字
  • ParticleSystem - 粒子系统:显示粒子效果
  • TileMap - 地图:显示使用 Tiled 编辑的地图
  • Animation - 动画:仅支持帧动画
  • Label (System Font) - 文字标签:仅支持系统字体
  • Component with Lifetime events - 组件及其生命周期管理


Cocos Creator的Lua插件下载地址:http://cocos2d-x.org/filedown/CocosCreator-Lua-v1.0



更多Lua支持的细节,请阅读Creator的Lua支持文档



1.3 Graphics 图形绘制模块,支持SVG格式


从 0.7 版到 1.1 版,深受大家喜爱的 DrawNode 图形绘制接口始终处于缺席状态,在 v1.2 版本中我们终于迎来了图形绘制 API 的威!力!加!强!版! cc.Graphics。这个新的图形绘制接口除了能够完爆 DrawNode 的原有功能之外,还能直接兼容通用的 SVG 数据格式,互联网上数以万计的 SVG 矢量图像现在都可以直接在 Creator 制作的游戏中绘制出来,程序绘图爱好者赶快来尝试吧!

 



 

更多细节,请参考cc.Graphics组件参考文档



1.4 可自定义扩展的属性检查器



打开 v1.2 后最醒目的变化就是属性检查器了,为了方便开发者在开发组件时能够更灵活的定制属性控件,我们重构了整个属性检查器,除了外观上的变化,现在的属性检查器性能更高,还解决了之前版本很多人反馈的属性不能全选、拖拽时会失灵等遗留问题。现在开发者可以轻松做出像 Widget 组件那样的自定义输入控件,让你的组件更方便易用。




 



1.5 引擎模块化可配置,打包体积缩小30%



v1.2 版本在「项目设置」面板中增加了新的分页「引擎模块」,在这个面板里您可以选择构建时哪些引擎组件会被打包,目前已经可以有效的减小打包版本中的 JavaScript 引擎 1/3 以上的体积,后续我们还会继续对核心模块进行细分和裁剪,将包体减肥进行到底。

 



1.6 AnySDK 内置支持



v1.2 版本构建出的原生工程将自带 AnySDK 的运行库,无需任何额外的环境配置就可以在项目中调用 AnySDK 接口并生成母包,然后在 AnySDK 软件中进行配置就可以轻松接入多渠道 SDK 了!

在下一个版本中我们将把AnySDK彻底内置到 Creator 内,以插件形式支持在 Creator 中通过图形界面直接完成 AnySDK 的配置并直接生成渠道包。

更多细节,请参考AnySDK内置支持文档

 

2. 完整改动列表
 

下面是Cocos Creator v1.2 的完整版改动列表,如果你关心自己提的新功能需求是否实现,或者BUG是否已经修复,可以在这份列表里找到答案。引擎团队一直很用心在处理社区用户的需求,有一些虽然不在版本亮点,但是仍然意义重大的功能,比如新增了WebView组件、新增了动画回调事件、新增了导出到Android Studio的选项等,都在开发中非常实用。



重大改动
 

  • [Build] 构建发布面板增加 Lua 引擎导出选项
  • [Engine] WebGL 渲染时加入自动批量渲染功能,通过妥善的组织合图和图片之间的渲染次序可以大幅提高性能
  • [Engine] 加入自动视窗裁剪(auto viewport culling)功能,基于 cc.visibleRect 对屏幕外的 Sprite 和 Label 节点进行剪裁
  • [Engine] 对 Web Canvas 渲染模式默认加入了脏矩形优化,大幅提升静态页面的渲染性能,并可以通过 API 关闭这个优化
  • [Engine] 原生引擎中加入 AnySDK 支持
  • [Editor] 在场景资源的属性检查器面板上添加了「延迟加载」选项,勾选后加载场景时只要完成了脚本和节点树的加载就会立刻运行,剩余的图片、plist 资源会在加载完成后自动显示
  • [Engine] 增加 cc.Graphics 图形绘制模块
  • [Preview] 在移动设备上运行预览时,可以点击浮动的齿轮按钮来呼出日志和调试界面
  • [Webview] 添加了 webview 组件,具体使用方法请参考范例


编辑器
 

  • [Editor] 在项目设置面板中加入了「模块设置」分页,可以通过复选来决定构建时引擎打包时包含的模块,减小不必要的包体
  • [Editor] 属性检查器已经使用新的架构重写,外观有了一定变化,另外修复之前在使用时的一些体验问题(比如点击时不能全选较长的数字)
  • [Assets] 修复资源管理器中名字带有 .. 的文件夹显示错误
  • [Assets] 修复了更新 Atlas 数据时,atlas 贴图下面的 spriteFrame 可能会显示更新之前的内容的问题
  • [Prefab] 修复了从 prefab 编辑状态退回到包含 Editbox 的场景时的报错问题
  • [Prefab] 修复了将控件库里的控件拖拽到 Prefab 节点下时会强制将 Prefab 转化为普通节点的问题
  • [Animation] 修复在编辑器中删除 AnimationClip 后,属性检查器里没有正确显示出 missing 状态,而且动画编辑器还可以继续编辑刚删除掉的 clip 的问题
  • [Animation] 修复了编辑带有 alignOnce 属性的 Widget 动画时预览无法正确生效的问题
  • [Animation] 添加了动画回调事件,包括 play, stop, pause, resume, lastframe,finished
  • [Animation] 修复了 disable Animation 组件后,如果勾选了 play on load,动画还是会被播放的问题
  • [Menu] Edit 里的全选操作现在可以正确选中层级管理器和资源管理器中的所有文件
  • [Scene] 修复了场景中反复开关 Particle 以后编辑器帧率卡顿的问题
  • [Scene] 修复了切换场景中节点的激活状态后 undo,导致节点树中显示的状态和属性检查器中显示状态不同步的问题
  • [Console] 重构了控制台消息架构,目前可以支持的消息数量没有上限
  • [Console] 修复了控制台在 windows 下不能正确显示中文日志的问题


引擎
 

  • [Engine] 对 Android 平台的渲染进行了优化,针对部分机型提升了性能
  • [Engine] 修复了改变节点父子关系时,子节点渲染时未能正确刷新继承自父节点的透明度问题
  • [Engine] 修复了同时加载多份Prefab资源的时候,如果有依赖的话,其中随机一个依赖项无法被加载
  • [Render] 改善了 WebGL 模式下动态字体的显示精度
  • [Render] 修复了在最新 Chrome 浏览器上渲染动画时可能会出现的不定期显示回溯的问题
  • [Render] iOS 平台图片解析现在使用 libPNG 库,解决半透明图片显示效果发黑的问题
  • [JSB] 修复了执行 bezierTo 动作时节点的坐标未更新的问题
  • [JSB] 修复了 scheduleOnce 会重复执行的问题
  • [JSB] 修复了 cc.game.EVENT_SHOW 和 cc.game.EVENT_HIDE 在 JSB 中无效的问题
  • [Action] 修复 Web 平台下 cc.hide、cc.show、cc.toggleVisibility 无法使用的问题


组件
 

  • [TiledMap] 优化了 WebGL 平台的 tilemap 的实现,取消了单个 tilemap 的渲染顶点数限制,目前原生平台下 tilemap 还是会有同屏顶点数的限制
  • [TiledMap] 修复了在编辑器中移动地图资源文件会导致地图不可用的问题
  • [TiledMap] 修复了 TiledLayer 的 setTileGID 接口在 web 平台不支持非整型坐标输入的问题
  • [TiledMap] 修复原生引擎对六边形的地图渲染效果错误的问题
  • [TiledMap] 修复 TiledLayer 无法动态设置透明度的问题
  • [Button] 修复在 onTouchEnd 事件里设置其 node.active=false 后,下次再显示时其显示图片没有恢复到 normal 状态的问题
  • [Label] 修复了原生平台动态设置 TTF 字体报错的问题
  • [ScrollView] Scrollview的 content size 小于 scrollview size 时,自动隐藏 scrollbar 并重置 content 位置
  • [ScrollView] 添加 stopAutoScroll 接口,用于手动中止惯性滚动
  • [ScrollView] 修复了 Touch startPoint 位置没有经过坐标系转换导致 ScrollView 中的点击事件失灵的问题
  • [Collider] 现在可以正确监听 node.group 运行时的动态改动
  • [EditBox] 修复 Android 平台上 EditBox 启动的时候会触发 TextChanged 事件的问题
  • [EditBox] 修复原生平台上 EditBox 中的 label 的行为和对齐方式与 web 平台不同的问题
  • [EditBox] 在 Web 平台上支持更多种类的键盘类型
  • [EditBox] 修复了 iOS 上第三方输入法会挡住输入框的问题
  • [EditBox] 添加 editingReturn 事件,用以区分是点击 enter key 还是点击了屏幕
  • [Component] 修复了复制黏贴 Component 时,如果有依赖的组件,则依赖的组件会在原组件之后添加的问题
  • [Component] 对属性检查器里 add component 菜单里列出的用户组件进行字母表排序


其他
 

  • [Build] 构建时为丢失资源增加了详细的引用文件和路径显示,而且现在不会导致构建失败了
  • [Build] 新增消息 editor:build-start,会在构建开始时发出
  • [Build] 移除构建到原生平台时合并 JSON 的功能,避免加载逻辑出错
  • [Build] 发布到安卓平台时加入了 Android Studio 复选框,仅对 default 模板有效,需要具有 Android SDK 22 才可以正确编译。
  • [Build] 修复了 Creator 程序名称中包含空格会导致编译模板类型为“binary”模式报错的问题


3. 关注Cocos社区


你可以在这些地方找到我们:
 

  • 论坛技术支持:http://forum.cocos.com
  • 每周教学直播:http://www.douyu.com/726225
  • 文档和视频教程:http://www.cocos.com/docs/creator/
  • 开源仓库和大量开源示例:https://github.com/cocos-creator
  • 微信公众号:搜索公众号名称「CocosEngine」