Cocos Creator 2.1.0 正式发布,新增 3D 支持
2018.11.29 by cocos
Cocos Creator 版本更新

Cocos Creator  v2.1 版本最大的改动就是支持了 3D 模型渲染、3D Camera、3D 骨骼动画、3D 点选等 3D 特性,同时编辑器原生支持解析 FBX 格式的 3D 模型文件,不需要额外的导入流程。

在之前 v2.0 中,Cocos Creator 就已经用上了基于 Cocos3D 的 3D 渲染器,具备了正式引入 3D 支持的基础。3D 特性的加入可以大大丰富 2D 游戏的表现力,减轻 2D 游戏的资源开销,带来更多的想象与扩展空间。不过需要强调的是,Cocos Creator 的目标用户仍然是现有的 2D 游戏开发团队,2D 游戏仍然是 Cocos Creator 2.x 时代的核心服务目标。我们会坚持优化 2D 游戏的开发体验及基础性能,逐步增加适合融入 2D 游戏的 3D 功能,陪伴 2D 游戏团队共同成长。Cocos Creator 不会成为一个纯 3D 引擎,那是 Cocos3D 的目标。Cocos Creator 的发展路线更接近 2.5D。

微信2.1


这不是 Cocos 第一次将引擎从 2D 升级到 3D,几年前 Cocos2d-x 就在 3D 领域进行过扩展,积累了不少经验,更诞生了《剑与家园》这样非常优秀的作品。不过当时是在一套已经很重的 2D 渲染器上堆砌 3D 功能,也缺乏编辑器支持,因此最终并未得到市场的广泛认可。而这一次,Cocos Creator 是在 Cocos3D 的 3D 渲染器基础上,直接把 3D 潜能释放出来,同时保证了无缝的编辑器使用体验,这次的改变是完全不同性质的。              


后续版本预告

  • v2.0 会继续维护,原生平台性能将会尽快优化。

v2.0 和 v2.1 将在一段时间内共同发展,v2.0 会继续维护,增加更多的性能优化和缺陷改善。我们将很快发布 v2.0.7 进行公测,在这个版本中,我们优化了引擎的渲染性能,尤其是原生平台的 Spine 和 DragonBones,性能都有了很大幅度的提升。

  • v2.1 的迭代将会比较激进

相比 v2.0,v2.1 的提升将主要围绕 3D 领域,我们推荐有 3D 需求的新项目升级到这个版本,并且在论坛等渠道和我们建立联系,我们负责 3D 的小伙伴将提供相关支持。由于 v2.1 是一个很新的版本,我们将加快迭代频率,尽量满足开发者的需求。目前 v2.1.0 版本仍不支持 3D 场景编辑,仅能够在属性检查器中对节点进行 3D 参数的设置。近期我们就会推出 v2.1.1 版本,用来支持 3D 场景编辑和材质系统,优化 3D 开发流程。


完整改动列表(相比 v2.0.5)          

What's New

3D 节点  

在 2.1 中,默认新创建出来的节点都仍然是 2D 的,当有需要时,只需要点击节点右上方的 2.5D 按钮就能切换成 3D 模式,切换后就能编辑 z 轴,详见 [3D Node]

3D节点切换动画_2
3D节点切换动画

3D Camera  

和 Node 一样,Camera 也分为了两种模式。当你把 Camera 组件添加到普通的 2D 节点上时,它就是一个 2D Camera。当你把 Node 切换到 3D 模式后,Camera 也会进入 3D 模式,3D 模式下即可编辑 Camera 的 FOV 等参数。

3D Camera切换动画_2
3D Camera切换动画

3D 模型导入  

目前 Cocos Creator 支持导入的 3D 模型格式为使用非常广泛的 .fbx,基本上 3D 建模软件都支持导出这种格式。导入的流程很简单,只需要将 .fbx 模型资源拖入到资源管理器,等待片刻即可完成导入工作。导入完成后,在资源管理器中看到导入后的模型资源是一个可以展开的文件夹,导入模型的时候编辑器会自动解析模型的内容,并生成 Prefab、网格、骨骼动画等资源,详见[导入模型]

1

Mesh Renderer 组件  

Mesh Renderer 用于绘制网格资源,详见[Mesh Renderer 组件]

2

骨骼动画组件  

骨骼动画组件继承自 Animation 组件,骨骼动画组件的使用方法与 Animation 组件没有太大区别,只是骨骼动画组件使用的剪辑只能是骨骼动画剪辑。骨骼动画组件将在导入模型时自动添加到模型的 Prefab 中,详见[骨骼动画组件]

3

更多 3D 相关说明,请查阅文档[3D 系统]

优化自动图集构建速度  

大幅优化自动图集构建速度,如果图集没有改变的话则直接使用上次构建的结果。

进一步提升渲染性能  

v2.0 相比 v1.x,有一些情况引擎不会进行渲染批处理,导致了 Draw Call 的增加。v2.1 对这些情况重新进行了优化。如之前 Color 或 Opacity 不同无法批处理,Sliced 和非 Sliced 共用同一贴图无法批处理,Opacity 为 0 的节点仍占用 Draw Call 的问题都得到了解决。

增加模拟器调试功能  

在项目设置 - 预览运行面板中,新增了“开启模拟器调试界面”选项和“等待调试器连接”选项。前一个选项的作用是,在模拟器预览项目时将自动打开调试窗口。后一个选项的作用是,暂停启动过程直至调试器连接完成,用于调试加载过程。

4

纹理自动压缩  

可以直接在编辑器中设置纹理需要的压缩方式,Creator 将在项目发布时自动对纹理进行压缩。在 Web 平台上支持同时导出多种图片格式,引擎将根据不同的浏览器自动下载合适的格式,详见[压缩纹理]

编辑器  

  • Dashboard 改为在打开工程的时候关闭,工程关闭的时候自动打开
  • Dashboard 将会自动记录上一次创建的工程路径
  • 优化 Button 在编辑器下的预览效果
  • 优化 Button Click Event 对组件的索引方式,避免脚本重命名后索引就丢失的问题
  • QQ 轻游戏构建时允许直接打包出 zip 文件,便于上传服务器
  • 新增插件商城在插件下载完成后自动提示用户安装
  • 构建微信小游戏主域工程时,不会再清空子域
  • 修改构建 Android 平台时默认选中的 API Level 为当前最高的 Level(Target API Level)
  • 移除了场景编辑器中的节点路径栏,节点路径可通过层级管理器的节点右键菜单获取
  • 动画编辑器对 cc.Enum 和 cc.Integer 类型的数值默认改用 Constant 曲线,不进行插值
  • 动画编辑器关键帧增删体验优化
  • 优化引擎自动编译有关体验
  • 新增了其它一系列体验优化

引擎  

  • [UI] 在 Layout 组件上新增 affectedByScale 属性,如果开发者希望 Layout 子节点的缩放能够影响布局,可以手动开启该选项。
  • [UI] 支持 XML 格式的 fnt 文件
  • [UI] Label 节点 onEnable 时将立即刷新一次节点的 Content Size
  • [UI] 当 Button 的 target 未定义时,将默认使用当前节点
  • [UI] ToggleContainer 增加了和 Toggle 类似的 checkEvents 事件属性,该事件只有在 Toggle 的 isChecked 状态变为 true 时才触发
  • [Action] 新增了 cc.Rotate3DTo、cc.rotate3DTo、cc.Rotate3DBy、cc.rotate3DBy 四个 Action 的支持
  • [Native] 在 iOS 和安卓平台重新加入了在 v2.0.0 中移除的 WebView 和 VideoPlayer 支持
  • [Native] Mac 原生平台切换至 V8 引擎,如需用回 JSC 需手动修改宏,详见 [#1515]
  • [Native] 添加原生平台 LocalStorage 缺失的 key 和 length 属性,详见[ #1371]
  • [Native] 在 iOS 原生平台上采用跟 Android 统一的拼音输入行为,不保留输入未完成的拼音
  • [Android] 升级安卓编译方式到 NDK r16 + Clang,同时采用 Clang 编译安卓预编译库
  • [Android] 升级 Android 构建工具配置 Gradle 至 4.4,plugin 至 3.1.4。(Gradle 4.6 有已知 issue 会导致资源打包失败)
  • [Android] 优化安卓输入框使用体验
  • [Android] 压榨安卓空包包体,最小包体从 7.0MB 减小到 6.3MB
  • [Web] 增加 Web 平台上 WebView 的透明度支持
  • [Web] 优化了 WebView 组件的显示位置
  • [Web] 优化 VideoPlayer 在 X5 浏览器上的适配表现
  • [Wechat] 支持在微信小游戏上响应 cc.game.EVENT_SHOW 事件时,获取到平台传入的 res 和 referrerInfo 参数
  • [VideoPlayer] 优化了 VideoPlayer 全屏播放的有关表现

Bug Fixes

编辑器  

  • 修复动画编辑器节点列表可能没更新的问题
  • 修复在场景编辑器里面能选中 RichText 子节点的问题
  • 修复使用命令行构建项目时,不论是否出错,错误码始终返回 0 的问题
  • 修复场景编辑器中的网格背景会穿透到某些半透明图片上方,导致颜色和运行时有一些差异的问题
  • 修复外部拖拽资源到资源管理器的无效位置时,编辑器会报错的问题
  • 修复发布 Android Instant 平台时远程服务器 ip 获取错误的问题

引擎  

  • [Core] 修复节点 destroy 后,activeInHierarchy 仍为 true 的问题
  • [Core] 修复 RenderTexture 中的 filter, premultiply alpha 设置无效的问题
  • [Core] 修复无法加载由插件引入的场景的问题
  • [Web] 修复 Chrome 69、70 上半透明对象渲染后可能出现白色残影的问题(Since 2.0)[#3357]
  • [UI] 修复 Button 在多个状态互相叠加时可能有些状态失效的问题
  • [UI] 修复 LabelOutline 设置颜色无效的问题
  • [UI] 修复了在 start 方法中设置 Toggle.isChecked 无效的问题
  • [UI] 修复 LabelOutline 组件 enabled 状态修改时效果没同步变化的问题
  • [Animation] 修复 AnimationState 的参数有可能解析为字符串类型的问题
  • [QQPlay] 修复 QQ 轻游戏不响应前后台切换事件的问题
  • [QQPlay] 修复 QQ 轻游戏上如果使用斜体,字体将会变得很小的问题
  • [QQPlay] 修复 QQ 轻游戏在锁屏重新进入或前后台切换时,声音无法重新播放的问题
  • [微信小游戏] [QQPlay] 修复小游戏平台 audio setCurrentTime 之后,不触发 ended 事件的问题[#3373]
  • [Native] 修复原生平台连接 socket.io 服务器可能会报 Bad Request 的错误
  • [Native] 修复 iOS 和安卓无法检测重力感应的问题
  • [Native] 修复 iOS 调用 cc.game.restart 重启游戏后再输入文本会崩溃的问题
  • [Native] 修复 Windows 原生平台上 Label 的 opacity 属性不生效的问题
  • [Native] 修复安卓上无法监听 onKeyUp 的问题
  • [Native] 修复安卓手机如果自带的 SSL 证书过期后会导致资源加载失败的问题
  • [Native] 修复安卓原生平台下载图片时不支持服务器重定向的问题 [#PR]
  • [Physics] 修复 MouseJoint 未能响应 touch cancel 的问题
  • [Spine] 修复当 Spine 在 Mask 下重新加载时贴图有可能丢失的问题

MIGRATION GUIDE

 v2.1 升级注意事项  

Node 的 rotation 相关 API 已被标记为 deprecated,运行时将提示升级为 angle ,详见[3D Node - Node API 升级]

安卓的 NDK 版本需要升级到 r16,否则将编译失败。

微信小游戏开放数据域  

从 v2.0.1 开始,Cocos Creator 升级了开放数据域解决方案,请参阅[接入小游戏开放数据域]

v2.0 升级指南  

详见[v2.0 升级指南]

资源升级  

从 v1.10 开始,Cocos Creator 对底层资源类型进行了重构,大多数项目不受影响,但有些项目可能会收到一些警告,详情请查阅[v1.10 资源升级指南]

以上就是 Cocos Creator v2.1.0 的更新说明。各位开发者可进入 Cocos 官网下载新版本,下载完毕,新建一个 example 工程,打开 assets/cases/3d 下的案例即可体验。在安装、升级和体验过程中,如有遇到任何技术难题,欢迎通过 Cocos 技术论坛等渠道向我们反馈,感谢各位的支持!