Breaking Changes
- 动画编辑器启用全新工作流程,进入动画编辑状态后会屏蔽对场景中其他节点的选择和修改,加入了大量新的快捷键方便动画预览和编辑,大大提高动画编辑器的性能
- 以 VS Code 作为代码编辑环境的全新开发工作流,解决了之前表现不理想的语法高亮和代码智能提示。内置的代码编辑器已经停止继续开发,请参考手册文档中「CocosCreator 入门/配置代码编辑环境」一节设置 VS Code 开发环境
- 基础插件工作流程已经开放,用户可以按照规范注册自己的插件、菜单命令,并通过 nodejs 程序和 HTML 页面的通讯实现各种数据处理。参考手册文档中的「扩展编辑器」一章。
- Cocos Creator 的 JS 引擎已经开源,和其他开源部分:Cocos 模拟器、引擎构建模板、手册文档、API 文档一起,都可以在安装目录下的
Resources/app.asar.unpacked/目录找到。 - Cocos Creator 安装目录下会自带一个 cocos2d-x 引擎,推荐使用内置引擎进行原生项目编译,以及可以通过主菜单「开发者/编译 Cocos 预编译库」来制作预编译库引擎,节省之后每次编译原生项目的时间
- Layout 组件的 API 有所调整,增加了
Resize Mode用于控制容器或子节点尺寸的自动适配。 - 目前脚本编译会使用严格模式(‘use strict’),全局变量必须声明到 window 下面,否则会报错。关于第三方库和模块的使用变化,请参考文档
脚本开发工作流程/第三方模块引用 - Label 组件默认排版模式改为
NONE,即文字约束框会自动跟随文字内容变化的模式 - Mask 现在算做渲染组件,不能和其他渲染组件同时存在在一个节点上!原有 Mask 组件和渲染组件共享 Node 的情况需要手动进行分离
- cc.loader 已重构,原有以下接口接口已废除,请使用新的 cc.loader.load 接口替代:
- loadJsWithImg
- loadCsb
- getUrl
- loadAliases
- register
- loadJs
- loadJson
- loadTxt
- loadImg
新增功能
- 新增 Spine 骨骼动画支持,添加组件 sp.Skeleton
- 新增 Tiled Map 瓦片图支持,添加组件 TiledMap 和 TiledLayer
- 新增 Prefab 编辑模式,双击 prefab 资源会立刻打开一个独立的编辑环境
- 新增 EditBox 文本输入框组件
- 为常用接口的 API 文档添加了代码范例和中文说明!
- 补全了之前空缺的手册文档
- 内置范例集合项目模板中添加了大量设置资源和脚本开发的实例
- Sprite 组件添加 Filled 和 Tiled 支持,Filled 就是按照给定的初始位置和方向裁剪 Sprite 的渲染模式,可以用来实现扇形裁剪的进度条。
- Sprite 组件添加了
Size Mode和trim选项,可以设置非自动剪裁的渲染模式和约束框大小,以兼容直接通过透明像素设置位移的序列帧动画 - Sprite 和 ParticleSystem 组件里增加了混合模式设置
- 预览运行游戏按钮旁边增加了下拉菜单,可以选择使用浏览器或原生模拟器预览游戏
- 属性检查器里增加了组件菜单,可以重置组件属性、移除组件、复制黏贴、移动组件顺序
- 对于设置了 helpUrl 的组件,会在组件标题右边显示帮助按钮,点击即可跳转到指定的 url
- 增加了自动更新下载器,有新版本时会自动提示,完成下载后会自动运行安装包
- 组件属性栏里的类型标签现在可以点击了,会在层级管理器或资源管理器里过滤出所有同类型的节点或资源
- 新建节点菜单里添加了 Sprite(单色),用于创建可显示单一颜色的 Sprite
- 组件属性栏里引用的资源和节点,可以通过点击标签右边的 「x」按钮清除
- 层级管理器和资源管理器的搜索栏里可以输入
t: Type的格式来过滤出该类型的资源或节点 - 在层级管理器中选中一个节点后按 Ctrl/Cmd + F 或双击该节点,可以在场景中聚焦显示此节点
- 鼠标悬停在本机预览地址旁边的 wifi 图标上时,会显示该地址的二维码,方便移动设备直接扫码
- 场景编辑器里添加了对齐节点的控制按钮
- 场景编辑器激活时,可以用键盘方向键微调节点位置
- 生成新节点时会放置在当前坐标系的 (0, 0) 位置
- 添加了 Component.enabled 属性可用来开启关闭渲染组件的显示
- 增加了重命名和删除节点轨道的功能
- 添加了 playAdditive 接口用于叠加两段动画,原 play 接口调用时会自动停止其他正在播放的动画
- Particle 组件添加了将定制的粒子属性参数导出到 plist 文件的功能,导出后会隐藏 Custom 属性。
- Widget 组件里添加了 alignOnce 接口,选中后只会在初始化时进行一次对齐,之后就不会再覆盖位置的设置了
- Layout 组件的
Resize Mode设为Children时,子节点会平均分配尺寸,以占满 Layout 节点排列的轴向 - ScrollView 现在可以接受鼠标滚轮输入了
- 增加了 Filled 模式,配合 Filled 模式的 Sprite 使用,可以显示随着 progress 更新剪裁区域的进度条
- 原生手机平台(iOS Android)构建时添加了屏幕朝向设置
- 移动 Web 平台(Web Mobile)构建时添加了屏幕朝向设置(只对 UC 和 QQ 浏览器有效)
- Web 平台构建时添加了是否生成
sourceMap的选项,必须在调试模式才能开启,非调试模式不会生成 sourceMap 了 - 构建时会自动剔除没有引用的资源,包括所有不在
assets/resources目录下的动态加载资源 - 添加可选择源码或预编译库的工程模板
- 浏览器预览界面增加了暂停、FPS、debug 信息设置等功能菜单
- 定义组件的 properties 时可以传入一个方法,该方法会在脚本加载完毕后执行,避免模块之前循环引用的错误
- 新增 cc.loader.loadRes 接口,可以指定加载资源的类型并忽略文件扩展名
- 开放了 cc.Class 自定义非组件类的接口,用于纯逻辑计算和数据类的生成
- 新增 getComponents, getComponentsInChildren, getComponentsInParent, getComponentInChildren 接口,用于更方便的获取节点树里的组件
功能变更和改善
- 通过菜单打开的手册文档和 API 现在会在浏览器里打开
- 新建项目时会自动添加一个
.gitignore文件,用于 git 版本控制 - 原生模拟器控制台被移除了,运行原生时的 log 会显示在编辑器内的控制台里
- 报错信息现在会正确的换行显示和展开/折叠
- 为编辑器里所有可执行文件和动态链接库进行了数字签名
- 优化了项目资源导入和验证的过程,大大加快项目开启和运行速度
- 改善了脚本编译或加载失败时属性检查器里组件的错误提示信息
- 使用 Rect Gizmo 修改节点尺寸时支持按住 shift 等比例缩放,平移场景的快捷键改为按住空格拖拽或按住鼠标右键拖拽
- 裁剪了 JS 引擎中不必要的模块,减少了 Web 发布包体积
- 在手机 android 平台运行 Web 版游戏时,默认开启 retina 显示模式
- cc.log 现在可以正确的在编辑器和浏览器控制台中输出日志
- 预览、刷新和构建发布移到了主菜单的「项目」菜单中
- 移除了「开发者」菜单中对普通用户没有意义或比较危险的菜单项
- 动画事件帧放在动画最后时,会按照事件帧所在位置计算动画总长度
- Layout 设置为可变尺寸容器时,子节点的 Widget 不能在可变尺寸的轴向设置对齐,避免循环适配导致崩塌
- 调试模式开启时,会在左下角显示帧率和 drawcall 数量
- 构建、编译和预览分离成不同的工作流按钮,构建和编译过程中可以点击取消中止进程
- 构建原生平台的日志现在不会在控制台里显示了,而是通过选择 Cocos Console 日志在单独的环境或文本文件里查看
- 构建非调试模式原生项目时,会自动将 JS 源文件编译成 jsc 二进制格式
- 发布到 windows 平台时,编译之后点击运行将自动执行编译出的 exe 文件,不需要再等待了
- 执行构建或编译操作前会先验证项目路径和包名的合法性
- 修改 HTML 模板以确保国产浏览器上会默认使用极速模式预览游戏
- 使用浏览器预览游戏时,使用 localhost 而不是本机 ip,以适应多网卡或离线开发需要
- 改善了项目资源较多时浏览器加载预览界面的速度
- 偏好设置面板新增了大量提示和报错信息
Bug 修复
- 修复了 Sprite 所在节点处于非 active 状态下 Sprite 仍能渲染的问题
- 修复了渲染组件初始化不及时导致脚本中修改渲染相关属性报错的问题
- 改进了编辑场景时浮点数计算问题,现在保存在场景中的属性值不会有过多浮点位数
- 修复了 Windows 上弹出对话框的外观过于吓人的问题
- 修复了编辑器面板右上角功能菜单的图标显示异常
- 修复了主菜单里复制黏贴节点无效的问题
- 修复了编辑器出现异常时保存场景会导致数据丢失的问题
- 修复了图集、位图字体等附带 png 文件的资源,导入时可能无法正确关联图片的问题
- 修复 windows 系统点击删除资源对话窗口的【X】关闭按钮会执行删除操作
- 修复了在使用 TexturePacker 打包的图集中包含路径信息时加载失败的问题,现在会将路径中的 ‘/’ 替换成 ‘_’ 并给予警告
- 修复了Rotate Gizmo 显示角度和节点 rotation 属性相反的问题
- 修复了加载场景时贴图加载失败的问题
- 修复了序列帧动画设置为 Loop 时,无法到达最后一帧的问题
- 修复了 persistNode 上的动画在切换场景时会被停止掉
- 修复了代码编辑器里一直按住 Ctrl+S 会导致脚本被清空的问题
- 修复了没有脚本的项目构建时会报错找不到
library/bundle.project.js文件的问题 - 改善了 Web 发布版本初始加载画面无法跟随视窗分辨率变化的问题
- 修复了一个可能导致 Web 发布版本无法有效压缩资源和脚本的问题
- 修复了有时候需要刷新编辑器才能通过移动设备在 Wifi 上预览的问题
- 修复新建工程没有场景时打开构建发布界面报错的问题
- 修复了可能无法使用 VS 2015 编译原生工程的问题
- 修复了发布 Web 版在国产 Android 手机浏览器上的大量兼容性问题
- 修复了编辑 Prefab 时删除子节点,保存时报错的问题
- 修复了 Label 属性值在场景加载后可能被重置的问题
- 修复了通过主菜单添加部分组件时可能产生报错的问题
- 修复了 Layout 组件子节点在层级管理器中顺序改变时排列顺序刷新不及时的问题
- 修复了 ScrollView 在 content 很大时惯性计算错误
- 修复了 ScrollView 和 Mask 组件共享 Node 时无法拖动视图内容的问题
- 移除了导入的 Particle 资源会出现 sourcePosition 报错的问题
- 修复了位图字体设置颜色时可能失效的问题
- 修复 Label 组件在 Resize_Height 模式下对空行高度处理的错误
- 修复了 Button 组件 interactable 设为 false 时仍然能响应 transition 事件的问题
- 修复了勾选 auto removal 时,在场景中的预览也会受影响
- 修复了 Button 点击事件里无法禁用按钮的问题
- 修复了 Sprite.spriteFrame 赋值时,初始值为空时会报错的问题
- 修复了编译脚本时出现
Can not access scenePosition if no running scene的报错 - 修复了 cc.eventManager 对于默认非 active 节点的子节点也生效的问题
- 修复了eventManager.pauseTarget 和 resumeTarget 在 jsb 下报错的问题
- 修复了eventManager.pauseTarget 和 resumeTarget 无法关闭节点手动注册的事件的问题
- 修复了节点绑定触摸事件时,hitTest 取值不正确的问题
- 修复了 AnimationState.duration 无法正确获取动画时长的问题
- 修复了反复加载场景时不会载入任何内容的问题
- 改善了 EventListener 不能删除超过两个回调的问题
- 修复了 cc.blink 动作没有效果的问题
- 修复了 cc.follow 动作会导致报错的问题
- 利用场景导出的节点 uuid 防止 persistRootNode 多次加载
- 修复了用户 require 第三方库失败时,会导致编辑器一直卡在加载状态的问题
- 修复了 clearInterval 在 JSB 上无效的问题
- 修复了原生平台使用 action 移动节点时无法正确获得节点坐标的问题
- 修复了原生平台上 Label 表现和 Web 不一致的问题
- 修复了 EaseAction 快捷方式在原生平台无效的问题
- 修复了原生平台上部分 Animation 属性失效的问题
- 修复了部分原生平台项目加载场景完成后的闪屏问题
- 修复了 AudioSource 在原生平台上无法播放声音的问题