Cocos Creator v1.3发布,总有一项新功能是你期待已久的
2016.10.26 by cocos
版本更新

在经历了中秋、国庆、堵车、雾霾、台风等各种不可抗力侵袭之后,Creator v1.3版比计划的延迟了一周发布。引擎质量当然要比跳票来得重要许多。上次v1.2版本大大提升了引擎性能,而这次更新带来了多个大家呼吁已久的新功能,总会有一项是你期待已久的:

富文本支持

Dragon Bones

骨骼动画支持

Prefab 自动同步

打包时自动合图

新增 UI 控件:PageView,Toggle , Toggle Group,Slider

Creator for Lua 1.1 新升级,插件形式全自动工作流程

全新 AudioEngine

cocoscreatorv1-3%e5%be%ae%e4%bf%a1
64d906a6-f0ac-4d8c-ba44-b3c05b61b233
ab52d2bb-17ea-4c33-8fcd-bea78df58c52
73d5a503-e7e0-4a4e-b1ca-530d08081e77
181f5215-b99b-4a1c-988e-cc366818fa0b
46f05537-128d-4463-a201-db839e6643cf

新增的功能里,不光有富文本、DragonBones 骨骼动画和无数新 UI 控件让你的游戏界面和角色动画具有更多的弹药和想象空间;Prefab 自动同步和自动合图功能全面提升了协作项目的工作效率,大大降低美术人员管理项目资源的成本;全新的音频引擎同时提升了稳定性和资源加载的效率;Lua 支持进一步补强,进入全图形化自动工作流时代,让 Creator 成为开发 Lua 游戏的最佳选择。

下面为大家详细介绍每个新功能的亮点,相信不会让你失望。

富文本支持 聊天姿势花样百出

有了富文本,大伙终于可以在游戏里愉快的聊天啦!新增的富文本组件 RichText 能够根据字符串里 BBCode 标签,自动生成不同样式的文字,目前支持的标签包括 size, color, b, i, u, img 和 on,分别用来定制字体大小,字体颜色, 加粗,斜体,下划线,图片和点击事件。有了富文本的帮助,能够轻松的使用少量 UI 元素配合特定格式的数据传入来展示丰富的文本样式,可以非常容易的解决游戏内战斗信息播报或聊天频道的渲染需求。

Dragon Bones 骨骼动画支持 动画制作一气呵成

响应广大用户的号召,我们在这个版本里加入了 Dragon Bones 这个非常流行的骨骼动画编辑工具的数据格式支持。DragonBones 组件的使用方式和 Spine 类似,只要新建组件后将 DragonBones 导出的动画数据和图集数据拖入到组件中即可马上开始使用,还可以通过组件定制如默认播放的动画、播放速度和循环次数等。

Prefab 自动同步 有效提升开发效率

Prefab 预制资源从设计之初就是希望能够让用户可以提高资源和场景元素的重复利用率,但之前的 Prefab 一旦在编辑器中被添加到场景里,就变成了静态的节点,无法自动同步 Prefab 资源的更新。这个拖欠已久的功能终于在 1.3 版本中补全了,现在在创建好 Prefab 资源后就可以选择是否需要场景中的 Prefab 实例同步资源文件的修改:

上图中表示的状态说明场景中的实例会自动同步。

下图中表示的状态是之前版本的默认行为,也就是该 Prefab 实例不会自动同步资源更新。 这个小功能的加入,将使静态搭建的场景更容易维护,比如一个主菜单场景由多个 UI 菜单组成,每个菜单都可以做成 Prefab 并由专人负责维护,这些人在各自修改 Prefab 并保存资源后,其他团队成员只要获取资源的变化,就会自动在场景中看到更新,而整个过程中场景数据都不需要做任何改动,大大提高了场景协作的流畅度!

新增 UI 控件:PageView,Toggle,Toggle Group,Slider

为了偿还另外一组拖欠的功能,我们一口气在这个版本加入了四个全新的 UI 控件 PageView,Toggle,Toggle Group,Slider。这些都是之前 Cocos Studio 就具有的控件,之后我们会进行 Cocos Studio 兼容性的测试,预计很快就可以支持这些从 Cocos Studio 导入带有这些控件的场景和工程。

随着富文本的加入和 UI 控件的补完,我们终于可以保证用户可以使用 Creator 实现任何所需的 UI 界面了,配合从 1.0 时期就非常强大的多分辨率自适应系统和功能高度集成的 Sprite 和 Label 基础渲染组件,Cocos Creator 将在重 UI 游戏的开发领域占有很大的优势。

Creator for Lua 1.1 新升级,插件形式即用即所得

在新版中,Creator for Lua 全面升级为插件形式,推出两大改进来提高开发效率和流畅度:

首次以插!件!形!式!直接集成在 Creator 用户界面中。点点鼠标完成 Creator 场景到 Lua 代码的转换工作,就是这么简单有木有!

提供自动构建功能。每次保存场景后,插件就会立即开始转换代码,妥妥的。

0ee263a1-638b-4a65-b2f8-6fb157e323b9

废话少说,我们来看看怎么安装使用这个神奇的插件。

安装插件

Creator for Lua 1.1 插件提供了 Windows 和 Mac 下的安装程序,执行安装程序瞬间完成安装。

然后,不好意思,没有然后了,已经装好了,ENJOY IT!

使用插件

启动 Creator,在场景里啪啪啪放一堆内容,然后选择菜单“工程 -> Lua Support -> Setup Target Project”,就可以看到目标工程设置对话框。


在这个对话框中我们只需要做三个步骤:

点击 Project Path 旁边的 “…” 按钮选择你的 Lua 工程目录; 点击 Copy Support Library 按钮(这个步骤只需要对每一个新 Lua 工程做一次); 点击 Build 按钮。 如果你还没创建 Lua 工程,可以参考下面的命令行:

$ cocos new -l lua mygame

构建出 Lua 代码后,我们就可以愉快的在 Lua 中显示 Creator 创建的场景了。

自动构建

默认情况下,并没有启用自动构建功能。所以修改场景后要更新 Lua 代码,需要重新点击 Build 按钮,或者选择菜单“工程 -> Lua Support -> Build Now”。

更省事儿的做法是在对话框中选中 “Auto Build” 选项。这样每次保存场景,就会自动更新 Lua 代码啦。

Creator for Lua 1.1 下载:

http://cocos2d-x.org/filedown/Creator-Lua-Support-1.1.3-win

http://cocos2d-x.org/filedown/Creator-Lua-Support-1.1.3-mac

AudioEngine全新升级 贴心细节让你用得更省心

在Cocos Creator v1.3 里,重构后的 New AudioEngine 仍然叫做 cc.audioEngine,但内部实现上已经脱胎换骨,解决了以下问题: 优化了预加载过程,加载完成后就可以立刻开始播放 增加了获取音频时长,获取当前播放位置等接口 增加音频播放完毕后的回调方法 优化了 Web 平台上音频播放的方式,大尺寸的音频会自动切换到 Audio 模块进行加载,节省内存开销

重构之后的音频引擎现在不再区分 Music 和 Effect 两种音频,而是都可以使用统一的接口播放。

其他重要改动

  • 增加命令行构建和打包工程,为持续集成测试铺平道路
  • 增加了指定跨项目共享资源库的功能
  • 优化内存管理模型,统一 JSB 绑定接口(cocos2d-x 3.13)
  • 优化资源缓存和加载机制
  • 重构 cc.Loader,支持每次 Load 独立的队列和更好的进度信息,解决了资源循环依赖时重复加载的问题和有几率出现同步回调的问题

  • 升级 spine runtime 库,支持 3.x 版本的 spine,修复了图像混合模式显示问题,支持 triangle 渲染命令

重要升级说明

由于图像处理库升级需要,Windows 版开始使用 64 位架构,不再支持 32 位的 windows 系统。带来的好处是编辑器内处理大量图片资源时的效率提升了至少5倍,而且能够支持新兴的图片格式 Webp。 Android 构建时将会列出本地已经安装的 API Level (在 android-sdk/platforms 里,通常以 android-10 这样的子目录形式出现),并可以由开发者自主选择编译时使用的 API Level,不再强制使用某一特定版本的 API Level。 Creator 的手册文档已经开源,英文文档比起中文版还欠缺很多内容,欢迎大家一起进行勘误、补完、翻译

地址:https://github.com/cocos-creator/creator-docs

完整改动列表

编辑器

  • [Installer] Windows 安装包里增加了自动安装 Visual Studio 2015 的安装选项
  • [Build] Android 平台增加 API Level 选择菜单,根据用户指定的 SDK 目录下的 platforms 中的内容列出可选的 API Level,并且在构建时自动修改相关的设置
  • [Build] 增加使用命令行构建项目的功能

  • [Build] 为 binary 模板添加 Android Studio 支持
  • [Build] 修复了构建面板中设置的屏幕朝向在 Web 平台第一次启动时不生效的问题
  • [Build] 选择 android 平台时的 keystore 密码现在会用密码格式显示
  • [Build] 修复了在 Mac 系统当项目资源很多时,构建可能会报错 too many open files 的问题
  • [Build] 修复了脚本放在 resources 目录下时,构建会报错的问题
  • [Build] 修复了构建出的 Android Studio 项目生成的 application 名称错误问题
  • [Build] 当引擎路径中有空格时,构建时会给出正确的错误信息
  • [Package] 修复了无法正确 watch 用户插件的改动问题,现在可以在编辑器打开的状态下随意修改用户插件并立刻获得刷新
  • [Assets] 优化了图集中的 SpriteFrame 资源缩略图标的渲染逻辑,解决了部分资源较多项目打开过程中可能卡死的问题
  • [Assets] 增加自动打包图集功能,需要在存放碎图的文件夹新建一个 自动图集配置 资源,之后就会在构建阶段将碎图自动生成合图进入打包。
  • [Assets] 为图集中的 SpriteFrame 资源增加了缩略图标显示
  • [Assets] 修复了导入大量资源时,有可能重复触发 compile 操作的问题
  • [Assets] 资源管理器搜索栏增加搜索 uuid 的功能,输入u: xxxxx 即可通过 uuid 进行搜索
  • [Assets] 在资源管理器里的资源右键菜单中增加「查找使用」功能,可以过滤出所有引用该资源的其他资源(包括场景和 prefab)
  • [Assets] 在导入 custom asset 出错时,提供更明确的提示信息
  • [Properties] 修复了 tooltip 在 array 和 object 属性上不显示的问题
  • [Properties] 修复了 reset node 操作无效的问题
  • [Properties] 修复了属性类型和已绑定数据不符时,不会正确显示报错信息和 reset 按钮的问题
  • [Console] 在 clear error 的时候现在不会清除编译失败的报错条目
  • [Editor] 修复了使用撤销命令还原一个值为 null 的属性时不会触发场景变化的问题
  • [Editor] 修复了 Undo 对象删除操作耗时比较高时,updateAnimatingInEditMode 会报错的问题
  • [Editor] 修复了项目设置面板里设置的初始运行场景,在使用模拟器运行时不会生效的问题
  • [Editor] 修复了 windows 平台经常会遇到 undo/redo 操作失灵的问题
  • [Editor] 第三方脚本导入为插件后,如果其中含有 ES6 语法,发布时添加报错提示
  • [Editor] 增加了命令行参数 --mount 来指定外部资源路径。(可以通过多个 --mount 参数来 mount 多个路径,参数值可以为绝对路径或者相对于工程的相对路径)增加命令行参数 --writable 来指定是否可以修改保存外部资源路径里的文件。
  • [Editor] 使用全新的图形处理库,解决了导入过大图片(8192x8192)时会报错的问题,并且提高了图像处理速度
  • [Editor] 修复了当项目中所有图片都进入自动图集时会导致构建失败的问题
  • [Editor] 修复了 Sliced Sprite 在编辑器切分时无法在场景中预览最新效果的问题
  • [Editor] 修复了按 Cmd/Ctrl + Q 关闭窗口时会引起报错的问题
  • [Editor] 在脚本资源勾选了 导入为插件 的情况下增加是否在原生或 Web 平台生效的选项
  • [Scene] 修复了保存场景会导致层级管理器里节点折叠状态重置的问题
  • [Scene] 修复了在场景中持续预览粒子一段时间后,再平移场景视图会严重卡顿的问题
  • [Prefab] 修复了自动同步 Prefab 的各种显示问题
  • [Prefab] 修复自动同步的 prefab 进行嵌套后,会导致场景无法打开的问题
  • [Dashboard] 修复了选择 打开其他项目 后取消,出现的项目不合法报错提示
  • [Node Tree] 修复了新建节点时,无法正确显示节点的高亮选中状态问题
  • [Node Library] 为控件库补完了 1.2 以来新增的控件类型

引擎

  • [Engine] 在所有平台限制 downloader 最大并发数,避免同时加载过多资源时的报错
  • [Engine] 修复了 grayscale shader 无法使用的问题
  • [Engine] 移除了用 loadRes 加载 json 资源时 No need to release non-cached asset 的警告
  • [Engine] 修复了构建到 Web 平台合并资源 json 后仍然有可能出现多次请求的问题
  • [Engine] systemEvent 现在会继承 EventTarget,并支持用 cc.systemEvent.on / once / off 来注册或取消注册系统事件,之前需要用 eventListener 来监听的键盘和重力感应事件现在可以统一用 on off 注册和取消了。
  • [Engine] 重构 cc.Loader,支持每次 Load 独立的队列和更好的进度信息,解决了资源循环依赖时重复加载的问题和有几率出现同步回调的问题
  • [Engine] 提供 Loader 每个加载任务独立的 context,解决运行时合并后的 JSON 对象没办法自动释放的问题
  • [Engine] 修复了微信桌面客户端里运行游戏时无法响应点击事件的问题
  • [Engine] 加入触摸点超时设置,用于解决微信 x5 内核上手指移出屏幕时不能正确触发 touchcancel 事件造成后续无法交互的问题,如果需要保留长时间静止的触摸点,需要手动修改超时的时长设置 TOUCH_TIMEOUT
  • [JSB] 重构了 JS-binding 的接口,提升了稳定性,绑定 API 现在和 cocos2d-x 3.13 保持一致
  • [Audio] 升级声音引擎到 New AudioEngine,解决了之前一些声音播放的兼容性问题
  • [Audio] 由 Loader 管理 Audio 的内存,让 loader 可以完全释放 Audio 资源
  • [Audio] 修复了 AudioSource 组件在切换场景后还会继续播放的问题
  • [Action] 修复了 cc.flipX 在原生平台会引起崩溃的问题

组件和模块

  • [DB] 添加 dragonBones 组件,支持 DragonBones 格式的骨骼动画
  • [Component] 增加 Slider 滑动条控件
  • [Component] 增加 Toggle 和 ToggleGroup 控件
  • [RichText] 增加了富文本组件的支持,使用 bbcode 格式的标签写法,目前支持颜色,字号,加粗,斜体和点击事件
  • [PageView] 新增翻页容器组件
  • [TiledMap] 增加了 ObjectGroup 显示的支持
  • [TiledMap] 修复了删除 Tiledmap 节点后再 undo 无法显示的问题
  • [TiledMap] 修复当 tmx 文件中使用了 tsx 文件时,可能会遇到显示错乱的问题
  • [TiledMap] 修复了当使用不同的地图资源重复初始化同一个 TiledMap 组件时会遇到的报错问题
  • [TiledMap] 修复了原生引擎中移动地图可能会出现接缝的问题
  • [TiledMap] 修复了 TiledLayer 的 setTileGID 接口在传入参数不足时可能产生错误的问题
  • [TiledMap] 修复通过 cc.TiledLayer.getTileAt() 获取的 tile 节点,调用 setVisible(false) 在 canvas 渲染模式下无效的问题。
  • [Spine] 在 Skeleton 组件上增加了 premultipliedAlpha 处理预乘图像,当图片的透明区域出现色块时需要关闭该选项,当图片的半透明区域颜色变黑时需要启用该选项
  • [Spine] 升级 spine runtime 库,支持 3.x 版本的 spine,修复了图像混合模式显示问题,支持 triangle 渲染命令
  • [Button] 新增 Scale Transition,添加重置 button size 到 target 节点尺寸的按钮
  • [Button] 当 button 的 interactable 设为 false 时,如果没有设置相应的 disable 状态,会自动将 normal 状态的贴图变灰显示
  • [ScrollView] 将桌面平台的鼠标滚轮操作修改为更符合 Windows 操作系统习惯的滚动方式
  • [Graphics] 修复了当用户添加 graphics 组件时,会重置自身节点的 Size 为 0 的问题
  • [Graphics] 修复了未定义属性的 get/set 警告
  • [Graphics] 修复了在 canvas 下需要调用两次 clear 才能清除掉绘制的内容的问题
  • [Animation] 修复了动画事件回调中调用 play 无效的问题
  • [Animation] 修复了从指定帧开始播放动画,前面的帧事件还会被回调的问题
  • [Collider] 修复了在 onCollisionEnter 中修改 node 的 group 无法正确更新的问题
  • [Collider] 修复了在节点上新增一个 Circle Collider 组件就会一直报错的问题
  • [Widget] 修复了 CCWidgetManager 在 Scrollview 大小改变时出现 _widget 报错问题
  • [Widget] 修复了属性检查器中的 topbottom 复选框消失的问题
  • [EditBox] 修复通过 prefab 方式实例化后直接设置 placeholder 报错问题
  • [EditBox] 新增 setFocus,stayOnTop 属性,当 stayOnTop 为 true 则,可以通过设置 tabIndex 来控件 Tab 键的 focus 行为。在微信的 iframe 里使用 EditBox 时,需要把 stayOnTop 属性设置为 true
  • [EditBox] 修改了 maxLength 属性的行为,当设置为 0 时禁止用户输入,当设置为 -1 时不限制最大输入字符长度
  • [Label] 修复了模式为 Resize Height 的 Label 文字内容设为空后再添加内容换行也不会生效的问题
  • [Label] 修复了在 Node 非激活状态下添加 Label 组件,导致 debounce 函数 warning 报错的问题
  • [Label] 修复了 LabelOutline 组件在适配 TTF 字体时颜色错误的问题
  • [VideoPlayer] 添加 META_LOADEDCLICKEDREADY_TO_PLAY 事件。现在 toggle visible 会暂停视频播放,并且在视频控件不可见的情况下面不能播放视频。同时,统一 web 和 jsb 的 video 的表现。
  • [Component] 新增一个生命周期回调 resetInEditor,这个方法只在第一次添加组件时调用(如果是场景重新载入,这个方法不会被调用)。另外这个方法也会在点击组件菜单的 reset 后调用。
  • [Component] 为 cc.Component.EventHandler 添加传参,目前只允许传入一个 string 参数