Cocos Creator 3.6 新特性详解 1/3:编辑器篇

这一次是真的等了好久

大家好,我是麒麟子,停更了五个月的我,很高兴又和大家见面了。

这次“复出”的原因是:

Cocos Creator 3.6 ”毁天灭地版“ 终于发布了。

虽然每一次发布,都会有配套的版本发布说明,列出版本中的新增特性和重要问题修复列表,但并不是所有朋友都有时间去细读这个说明,去研究每一个特性。

所以麒麟子想为某些引擎版本写一些分享内容,挖掘版本中为开发者带来的效率、效果、性能方面的提升,这也是引擎能为开发者们带来价值的基础三要素。

同时也希望通过这些分享,让来不及尝试新版本的朋友感受一下新版本的风采,给正在评估要不要入手新版本的朋友们提供一些参考。

3.6 版本是麒麟子特别期待的一个版本,因为它包含了太多“刚需”特性。这个版本麒麟子从公司内测版开始使用,持续跟进到社区公测版正式发布版

整体使用感受是:满足中略微带着惊喜

由于此次 3.6 版本更新内容较多,将分为编辑器、渲染、性能优化三篇进行。

工欲善其事,必先利其器

生产工具是生产力发展的客观尺度,是人类改造自然能力的物质标志

在正式分享之前,麒麟子想简单讲一下引擎的发展史。

游戏开发工具的演进从本质上讲,也是以提升生产力为主要目标的。这个演进大致可以分为四个时代。

I. 零时代

在这个时代,没有SDK,没有工具,所有项目都是直接调用系统的绘图API进行开发,每一个项目都会根据自身需求,从头构建游戏框架。

II. SDK时代

随着越来越多的游戏项目问世,有一些开发者抽离了多个项目共同需要的部分(如渲染流程、资源加载、动画播放、用户输入、平台兼容等问题),形成了SDK代码库,我们称之为引擎。

开源界比较火的如 OGRE、Irrlicht、早期版本的 Cocos2d-x。基于引擎开发项目,可以大大缩短前期的基础构建时间,节约成本,提升生产效率。

III. 工具集时代

纯代码的SDK无法使美术和策划很好的投入到工作中,每一个项目组都需要根据自己的需求实现一些工具,如场景编辑器,UI编辑器,特效编辑器等等,以所见即所得的方式提升工作效率。

IV. 集成式开发环境(IDE)时代

工具集时代,每一个工具是独立的,一个引擎SDK会配套一系列工具以满足游戏开发需求。

完成一项工作有可能需要在多个工具间切换才能完成,各个工具之间的数据格式可能会随着版本变迁而变得不兼容。

工具集这样的方式,生产效率和容错率都有明显的瓶颈,集成式开发环境的出现打破这一瓶颈,极大地提高了生产效率和容错率。

同时,项目中所有人使用的是同一套工具,学习交流成本低了很多,团队成员间的协同也更加和谐。 Cocos Creator 就是这个时代的产物。

3.6 版本中的编辑器有着非常多可圈可点的提升,比如编辑器内置的预览渲染调试模式动画可以嵌入触发轨道播放器可视化多语言编辑器等等。

接下来我们进入本文主题,细数一下 Cocos Creator 3.6 在编辑器方面的重要提升。

UI视觉、交互体验改版

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QYGN1QtQ-1660898387586)(https://files.mdnice.com/user/21366/65d55ab6-00e6-4eae-b185-f40b6ac28780.png)]

打开编辑器,首先感受到的就是:它不一样了!

这里省略掉上百字的赞美之词,浓缩成一句:666!

那它到底有哪些不一样呢?

主题风格

1、偏好设置里,去除了配色主题(Theme Color)选项,不能再更换主题了。

2、新版本的明暗度介于旧版本 “creator” 和 “dark” 两个主题色之间,看起来更轻松了。

3、标题栏和主题色一致(目前仅 Mac OSX 支持,Jare 悄悄对我说 Windows 平台会在后续版本中支持),区域之间的间隔采用了深色线条,显得更高端了。

场景视图区域

可以很明显地看到,许多功能从面板上改为了场景区域上的浮动按钮,这些浮动按钮会根据编辑模式变化,使开发者可以更聚焦于当前编辑的内容。

这一次的UI改版远不止这些,更多的细节朋友们请打开 Cocos Creator 3.6 自行体验吧!

如果想对此发表建议的朋友,可以移步官方论坛贴:3.6 | Cocos Creator 首位编辑器UI设计师入驻社区啦

编辑器预览

当 Cocos Creator 0.9 版本出来的时候,麒麟子就开始期待,期待着有一天,能在 Cocos Creator 编辑器中直接运行、调试游戏。

有了内置预览功能,开发游戏的时候就可以很直观地看到节点数据的变化;可以借助编辑器编辑的功能,修改对象信息;可以在节点树中看到动态创建的对象情况;可以在面板上测试我的各项Shader参数等等。

如上图所示,启动内置预览功能只需要两步:

  • 1.将启动模式切换到 编辑器预览(Preview in Editor)
  • 2.点击红色箭头所指的按钮,即可进入下图一样的界面。

为了照顾到各类项目需求,预览模式提供了以下实用功能:

  • 1.红色箭头(停止运行时预览):点击后即可退出预览状态
  • 2.蓝色箭头(调节预览帧率):可手工输入想要的帧率。这个功能非常有用,比如,你可以设置为 1,就可以逐帧检查动画状态。也可以设置为任意值,用于检查不同帧率下的游戏逻辑功能是否正常。
  • 3.绿色箭头(切换预览分辨率):分辨率列表提供了主流的配置可供选择,也提供了自定义分辨率能力。
  • 4.黄色箭头(旋转方向):可以切换横竖屏预览模式。
  • 5.灰色箭头(预览缩放):可以缩放预览窗口大小。
  • 6.白色箭头(自适应大小):点击后,预览窗口内容会自动撑满。

更多细节请移步至官方论坛:3.6 | 编辑器预览(GameView)公测帖

渲染调试(Rendering Debug View)

经常做3D项目的朋友应该时常面临一些检查阴影区域,检查UV,检查法线,检查高光等操作。

Cocos Creator 3.6 版本中新增了这个特性,如下图所示:

我们拉近看:

目前这个特性支持的列表如下:

公共信息:

  • 基础颜色光照(Lighting With Base Color)
  • 级联阴影染色(CSM Layer Coloration)

原始模型信息:

  • 顶点颜色(Vertex Colors)
  • 世界位置、法线、切线(World Posistions,Normals,Tangents)
  • 前向面颜色(Front Face Coloration)
  • 一套UV,二套UV,光照贴图UV(UV0,UV1,Light Map UV)
  • 透视深度(Projection Depth Z)
  • 线性深度(Linear Depth W)

原始材质数据:

  • 世界空间像素法线、切线、副法线
  • 基础颜色、漫反射颜色、高光颜色
  • 透明度、金属度、粗糙度、高光强度

除此之外,还有一些光照结果数据、雾化因子等选项,就不一一列举了,看下图:

部分效果截图:

3D模型预览增强

Cocos Creator 3.6 增强了3D模型的预览效果,到目前为止,Cocos Creator 的资源管理器、资源预览窗口、Mesh选择窗口均支持 3D 模型预览,在选择模型的时候终于不用猜了。

美中不足的是,材质预览依然还是下面这样子。

目前版本中,如果想要查看材质效果,只能先在资源管理器窗口中选中材质,在属性检查器面板中查看。

希望在后面的版本中可以像 3D 模型预览一样,在编辑器各个材质文件展示的地方实现材质预览效果。

可视化多语言编辑器

随着越来越多的开发者出海,多语言版本游戏的需求与日俱增。 特别是从今年开始,麒麟子收到的关于 i18n 的反馈就明显增多。

直接使用 i18n 的问题在于,开发者需要自己设定多语言策略,策略一但有缺陷,就无法完全交由策划或者内容翻译团队来做。

对于一个团队来说,可能需要从头到尾做两个项目,才能积累出较为丰富的多语言版本经验。

没想到 Cocos Creator 3.6 竟然内置了一个可视化的多语言编辑器,按照引擎组的说法,它有以下几个优点:

  • 全程无代码操作:只需点点点即可完成全部流程操作,以后翻译的活可以转交给策划、商务或者渠道等,减轻技术大大们的工作压力
  • 所见即所得:可以随时预览,也可以各种语言之间来回切换
  • 自动翻译:可以接入外部翻译软件,点一点即可自动翻译
  • 高度自动化:例如,全自动一键扫描所需翻译内容、自动翻译、快速构建、智能匹配文件等等

可从 面板->本地化编辑器 菜单打开多语言面板,如下所示:

不要被看似复杂的界面吓到了,界面上大部分内容都是自动填充的。

只需要简单的三步,就能够完成一个项目的多语言配置:

  • 收集内容:通过自动化扫描方式获取所需翻译的文本、ts代码、scene、prefab、video、audio、image文件
  • 翻译内容:通过人工翻译或者外部软件自动化翻译工具将内容进行翻译
  • 构建发布:通过构建发布功能将指定的语言进行打包

眼尖的朋友应该发现了,他还有一个自动翻译服务,想要了解更多操作,请参考官方论坛:3.6 | Localization Editor 公测帖

动画编辑器增强

请看上面动图的特效部分,它由一个刀光和一个爆炸特效组成。当角色的挥砍动作播到某一帧的时候,刀光特效开始播放。当挥砍动作播放到打击帧的时候,会出现一个爆炸特效。

想要高效的在编辑器中制作出这类动作与特效完美吻合的效果,我们至少需要动画编辑器的两个功能:

  • 1、允许动作触发特效或者其他动画
  • 2、实时预览,所见即所得,便于微调

Cocos Creator 3.6的动画编辑器,新增了动画触发轨道的功能,在触发轨道上可以播放一个或者多个其他现存动画的功能,并且能够控制其时长。

此功能可以使特效师在制作动画的时候,通过组合的方式实现更复杂的效果,并且能实时预览。这将大大提高了特效师的工作效率。

特效师们,赶紧行动起来!

3D模型导入器优化

几乎每一次的版本更新都会对模型导入器进行增强,在 Cocos Creator 3.5.1 的时候就已支持智能材质导入,如下图所示:

截止目前,支持的 DCC 材质如下表:

下图为 Maya 中的材质自动导入 Cocos 后的效果对比,可以看得出来,已非常接近:

在 3.6 版本中,导入器再次强化,主要更新如下:

  • 1.新增 GLTF specualr-glossiness 支持
  • 2.新增 Blender principled bsdf 材质的 specular 通道支持
  • 3.新增 mixamo.com 模型材质导入支持
  • 4.增强 fbx surface phong 默认材质导入效果
  • 5.模型拆分由默认开启变为默认禁用

材质效果提升是基本操作,就不过多讨论,麒麟子主要想说一下第 3mixamo 材质支持和第 5模型拆分默认禁用

mixamo.com

mixamo 是 Adobe 的一个可以为人体模型智能绑定骨骼并使用动画的软件,它同时还提供了许多人物模型和常见动作库,可免费使用。如下图所示:

但 mixamo 导出的模型在导入 Cocos Creator 时,材质呈现差异较大,因此在 Cocos Creator 3.6 中做了修正。

很多朋友说不知道哪里找带动画的测试模型,mixamo 是一个不错的地方。

模型拆分默认禁用

由于 Uniform 的限制,当骨骼数量超过一定值后,无法一次性提交给显卡渲染,此时就需要做特殊处理。

常见的处理方法有两种:

  • 拆分模型和骨骼,分批提交
  • 使用纹理传输骨骼动画数据

在 Cocos Creator 3.6 版本之前,模型拆分功能默认是开启的。

默认开启的原因是,简单来说就是:当模型骨骼未超出 Uniform 限制时,直接使用 Uniform 传递骨骼动画数据的方式的性能会高于使用纹理传输骨骼动画数据。

引擎组大佬对这个情况的描述是:对于 CPU 版本的骨骼动画,使用的是 Uniform 进行骨骼数据传递,由于不同设备和图形驱动的 Uniform 上限不同,所以我们使用了最低限制的 iPhone6 WebGL 作为 Uniform 上限,确保没问题。如果模型的骨骼数量超出限制(大概是 26-30 个),就会进行模型拆分,拆分为不同的 sub model,相当于是不同 draw call,这样每个 draw call 的 Uniform 都不会超限。

许多朋友反馈说自己的一个人物模型会占用多个 DrawCall,主要原因就是这里被自动拆分了,但开发者并不知道。

那为什么3.6版本不需要拆分了呢?

3.6 版本中,对于非 GPU 版本,做了运行时动态的 Uniform 限制判断,只要满足条件就会使用 Uniform 传递,如果不满足就退化为 FloatTexture 或 RGBA Texture 来传递。

基本规则如下:

  • 默认情况下不再拆分模型,不对导入的模型数据做修改
  • 如果骨骼数量未超过限制,直接使用 Uniform 传递
  • 如果骨骼数量超过限制,则使用纹理传递

使用纹理传递骨骼动画数据的方式需要在顶点着色器中访问纹理,这一特性最低支持为 OpenGL ES 3.0, WebGL 2.0

但依靠 GL 扩展,在仅支持 OpenGL ES 2.0WebGL 1.0 设备上,几乎已达到 100% 的覆盖率,所以无需担心兼容问题

目前保留此选项应该只是为了保持旧项目的兼容性,在适当的时候会考虑移除。

场景编辑功能增强

对于某些 3D 游戏来说,场景的制作效率往往决定了项目进度。

在场景编辑工作中,模型的摆放和模型位置的调节往往占了90%的工作量。Cocos Creator 3.6 提供了以下三个提升场景编辑效率的功能:

表面吸附

表面吸附主要用来在一定范围内的物体表面移动,使物件可以精确的摆放在物体表面。

:对于有碰撞体组件的物体,表面吸附会吸附在碰撞体表面,而对于没有碰撞体的物体,表面吸附会吸附在物体表面。如下所示:

操作流程如下:

  • 选中需要挪动的目标物体
  • 按下快捷键(Ctrl/Command + Shift),gizmo出现拖动ICON
  • 移动鼠标时,可以切换锚点到待移动的顶点
  • 鼠标左键点击拖动ICON,移动
  • 移动时工具会自动检测里光标附近的带有碰撞体积的物体,如果没有,则吸附在表面
  • 移动完成后松开鼠标左键确认位置

顶点吸附

顶点吸附的主要作用是更精准的通过一个物体上的顶点,与另一物体的某顶点对齐。

操作流程如下:

  • 选中需要挪动的目标物体
  • 按住v键,gizmo出现拖动ICON
  • 移动鼠标时,可以切换锚点到待移动的顶点
  • 左键点击锚点,移动鼠标
  • 工具会根据根据光标位置,计算出当前待吸附的目标,并在目标各顶点间移动注意:只能吸附在有顶点的位置
  • 移动完成后松开鼠标左键确认位置

多对象框选

多对象选择是场景编辑中频率很高的操作方式,但在没有多对象框选之前,如果我们要选择多个对象,需要精确知道对象节点,再通过复选节点的方式进行多选操作,很不直观。

有了多对象框选功能后,场景编辑更加灵活方便了,用户无需在层级管理器中寻找需要被多选的对象节点,全部覆盖在选择框中的对象会被选中,未全部覆盖的对象不会被选中。

操作流程如下所示:

小结一下

八年前,在经历了 4 款 3D 引擎和 5 个 3D 游戏项目的毒打后,麒麟子有感而发,写了一篇文章叫《游戏引擎不仅是代码,更多的是完善的工具》,当时想表达的心情就是:生产效率是衡量一个引擎是否优秀的主要指标,不管是易用性、稳定性还是兼容性,最终都会折算到生产效率上。

Cocos Creator 从立项之初,就以提升生产效率为主要目标,这也是麒麟子第一眼就爱上Cocos Creator,认为值得长期投入精力的原因。

一路走来,从 Cocos Creator 最近的更新表现来看,麒麟子很庆幸自己入坑得早。但入坑晚的朋友也不要纠结,过去已经是过去,目前你拥有的最早入坑时间就是现在,想要就赶紧行动吧。

期待许久的内置预览渲染调试3D模型预览增强等特性别提有多甜了,开发、调试效率直线上升。

可视化多语言编辑器动画编辑器增强算是惊喜吧,在游戏出海和美术工具提升方面又迈出了一大步。

模型拆分功能默认禁用虽然只是一个很小的细节,但却能解决大多数项目问题,希望以后这样的小优化越多越好。

由于篇幅有限,麒麟子不能将所有编辑器相关的优化都一一展示,更多内容就得靠朋友们自行挖掘啦。

下一篇文章麒麟子将重点介绍 3.6 版本中关于渲染相关的内容,敬请期待!

Cocos Creator 3.6 新特性详解 2/3:渲染篇
Cocos Creator 3.6 新特性详解 3/3:性能篇