你好,我是你的技术探路者郑洪智,你可以叫我大智。
直播《聊一聊2019.3的新功能》回放:https://www.bilibili.com/video/av85824703
Unity2019.3终于在2020年的1月28日发布了。对于这个姗姗来迟的版本,咱们一起来看看都有哪些高(yao)大(xue)上(xi)的新功能吧。
大智根据官方博客发布的2019.3的文章(https://blogs.unity3d.com/2020/01/28/unity-2019-3-is-now-available/),对里面提到的新功能进行了体验,并结合之前Unity官方公众号发布的文章进行了整理。
最受关注的几个功能可能是:
- HDRP正式版发布
- DOTS大幅更新
- 更新了多个正式版的2D工具
先通过官方的一个短视频来看看都更新了哪些内容吧:
https://v.qq.com/x/page/o3058vkrcep.html
下面我们依次来看看都更新了哪些主要功能:
编辑器工具方面
地形更新
现在地形可以挖洞了,可以创建洞穴、地下室等地形了。
Timeline上可以直接编辑动画的骨骼
Presets功能有重大更新
Preset功能是一个没有被广泛推广但是非常有用的一个功能。
使用Preset可以预设一个项目中各种类型的默认值,举个简单的例子比如灯光、刚体等等。
这次更新之前呢,每个类型只能对应一个默认的Preset。
这次更新之后呢,每个类型可以对应多个默认Preset,并且根据GameObject的命名规则设置不同的默认Preset。
支持第三方材质
编辑器增加了三种材质的支持:
- Autodesk Arnold Standard Surface shader
- Autodesk 3ds Max physical material
- Autodesk Interactive shader
场景工具更新
现在ProGrids成为了Unity内置的场景网格工具,之前是一个插件。
此外在Hierarchy上面增加了一个小功能:设置GameObject在场景中是否可以选中。在大场景中编辑时非常有用。
2D工具重磅更新
2D更新了非常多的正式版本的工具包,都可以在Package Manager中找到并安装使用。
此次更新还有一个2D的示例工程,应用了很多下面提到的新功能,你可以在AssetStore中下载安装:https://assetstore.unity.com/packages/essentials/tutorial-projects/lost-crypt-2d-sample-project-158673
2D更新的正式版工具包括:
- 2D PSD Importer:PSD文件导入器,可以直接导入PSD并且使用其中的图层。
- 2D Animation:提供制作2D骨骼动画的功能(包括Sprite绑定、骨骼创建、配饰等等)
- 2D Tilemap Editor:瓦片世界编辑器。此外还有一个额外的工具(https://github.com/Unity-Technologies/2d-extras)可以用来创建带动画的瓦片;这个工具还能自动将瓦片的图形匹配相邻的瓦片。
- 2D Sprite Shape:精灵形状编辑器。可以用来创建轮廓是曲线的精灵和地形。
-
2D Pixel Perfect:在任何分辨率下都保证2D的渲染是像素最优化的,此外Cinemachine还增加了一个扩展
CinemachinePixelPerfect
,这样Cinemachine的2D相机也可以支持Pixel Perfect了。
此外还发布了一些处于实验中的功能:
2D Lights和2D Shadows:包含在URP的2D渲染器中,支持2D的灯光和阴影。
支持精灵的第二套贴图:可以给精灵添加法线贴图和遮罩贴图,同时能根据不同的光照环境做出真实的反应。
以上两个功能可以在URP的2D渲染器文档中具体查看。Sprite Swap:动画重用的功能(包含在2D Animation包中),替换精灵外观的同时保持骨骼和动画。
程序员工具
增加SerializeReference属性
之前的[Serialiablable]
序列化之后都是值类型,而这个新的SerializeReference
属性可以引用其他对象。
并且这个属性也能支持多态的数据。比如List<IAnimal>列表可以包含class Dog : IAnimal{}
和class Cat : IAnimal{}
。
SerializeReference修饰的成员也可以是null值,而不是像之前使用的是每个类型的构造默认值。
这么说可能还有点抽象,你可以体验一下下面这一段代码。此外还有一个最直接的改变是可以提高UnityYAML库文本序列化的速度,带来场景加载和保存的速度提升。
using System;
using System.Collections.Generic;
using UnityEngine;
public interface IShape {}
[Serializable]
public class Cube : IShape
{
public Vector3 size;
}
[ExecuteInEditMode]
public class BuildingBlocks : MonoBehaviour
{
[SerializeReference]
public List<IShape> inventory;
void OnEnable()
{
if (inventory == null)
{
inventory = new List<IShape>()
{
new Cube() {size = new Vector3(1.0f, 1.0f, 1.0f)}
};
Debug.Log("Created list");
}
else
Debug.Log("Read list");
}
}
可配置进入播放模式(实验阶段)
设置的地方在Project Settings > Editor > Enter Play Mode。
使用好这个配置可以加快进入Play模式的速度,具体怎么用Unity官方已经有相关说明了:https://mp.weixin.qq.com/s/4mQX9XTmnFx-1g-qFuNXhQ
PhysX从3.4升级到4.1
明显的改变会是:MeshCollider生成速度加快,布料性能提升。
Profile功能的改进
- 可配置记录的帧数,之前最多300帧,现在可以配置(300-2000),查看更多的数据了
- Deep Profile现在可以让你在所有的Player中看到C#代码的结构,托管内存的申请,调用堆栈等。
图形渲染改进
这次还发布了Unity2019电影Heretic的完整版(记得看到底哦,这次是完整版),先来一睹为快吧!
https://v.qq.com/x/page/q3058fjiesf.html
HDRP现在是正式版了
HDRP在2019.3增加了Custom Render Pass、Custom Post processing、Physically Based Sky功能。
此外还有一个好消息是HDRP支持VR了。
HDRP中的实时光线追踪功能,现在是预览包。如果你感兴趣,可以看一看这个项目:https://github.com/Unity-Technologies/SmallOfficeRayTracing
LWRP更名为URP
之前的LWRP会让人有些混淆,以为只能用于低端机。实际上URP的目标是用于所有的终端,对画质有极高追求的可以使用HDRP。
使用URP相对于原来的内置管线将会有更好的性能和扩展性。
URP也有上图的Demo可以下载学习:https://github.com/Verasl/BoatAttack/tree/demo-work
Visual Effect Graph正式版发布
Visual Effect Graph是Unity中新一代的特效工具,可以创建非常强大的特效。相比原来的粒子系统,这个工具更系统,可以处理特效的整个生命周期,可以用图形化的方式连接制作。
《大话Unity》中已经有Visual Effect Graph的入门教程:https://edu.hongliu.cc/detail/p_5ce27b17264b9_aSdvSmWz/6
编辑器和团队工作流
编辑器UI的更新
包含图标、字体、交互视觉反馈、支持高DPI、性能等一系列更新。
Quick Search
Quick Search是Package Manager中的一个包,现在已经正式发布了。可以用于搜索工程中的几乎所有东西,包括资产、场景中的物体、设置甚至菜单等。
UIElements和UI Builder
Unity的新一代UI系统UIElements有一些更新,此外还有处于预览版中的UI Builder工具。目前这个UI系统仅能用于编辑器的相关UI的构建,预计在2020版将能用于运行时。
关注洪流学堂公众号,将会第一时间推出UI Elements的实战教程。
Package Manager更新
主要有两点:
1、可以通过Url安装,从Git版本库安装一个package,那就意味着你现在可以制作自己的package,托管在自己的Git库中,提高团队之间的协作能力
2、Asset Store中的插件资源可以在Package manager中管理安装了(Unity编辑器中的Asset Store移除了,现在只能通过网页进行浏览和购买,然后通过package manager安装)
AssetDatabae Pipeline更新到Version 2
你可能对于这个更新不感兴趣,但是这个更新能带来:在不同平台之间的切换速度会加快很多。(原因是现在它可以保存多个平台的资产版本,同样也会带来项目硬盘占用空间增大)
平台
新的Input System(预览版)
旧的输入系统已经被诟病了很久,实现自定义可配置的键盘布局都很费劲,那么新的输入系统是什么样子呢?
新的输入系统分离了输入操作和游戏逻辑,然后进行绑定。
具体可以阅读官方的博客:《Unity新一代输入系统介绍》https://mp.weixin.qq.com/s/yWJLD6x2kBblKe7V6FX7jA
Incremental Garbage Collector(增量垃圾回收,正式版)
增量垃圾回收现在是正式版了。增量垃圾回收的机制是:把需要依次回收的垃圾分为几帧回收,这样可以将回收的压力分摊,减少卡顿的现象。(除了WebGL平台,其他平台都支持)
AR/VR
AR和VR平台上更新和增加了很多工具。包括:
AR Foundation
大一统的AR平台,现在添加了对Magic Leap和HoloLens的支持。
XR Interaction Toolkit
XR交互工具。包含了XR交互中常见的操作。
更详细的内容可见官方博客:《XR Interaction Toolkit预览版资源包发布》:https://mp.weixin.qq.com/s/je-RYfXsiSroOkttF164Bg
移动平台
Device Simulator(预览版)
Device Simulator设备模拟器,你可以使用它预览不同手机的具体行为和硬件特点,从而让游戏代码能够在Unity编辑器内以接近真实设备的条件运行。开发者可以在游戏视图中预览特定分辨率和屏幕刘海布局的具体效果,也可以预览针对设备的自定义设置。
详见:《全新设备模拟器加速移动端迭代》:https://mp.weixin.qq.com/s/trjK_RsIignA65alpPjj9A
Unity as a Library
很多时候,我们会遇到这样的需求:将3D的内容嵌到已有的App中。这个需求之前也是可以实现的,不过会很麻烦。从Unity2019.3开始呢,可以将Unity打包成一个库,直接丢到原生应用中使用,对未来的AR应用有巨大的助力。
详见:《在原生iOS或Android应用中将Unity作为库使用》:https://mp.weixin.qq.com/s/JOnqzZfQbTs89Rgm1Bae-Q
On-demand rendering(按需渲染)
使用按需渲染可以让你独立控制渲染,独立于其他子系统。可以降低电量消耗,并避免出现CPU过热的情况。
具体API:https://docs.unity3d.com/2019.3/Documentation/ScriptReference/Rendering.OnDemandRendering.html
DOTS
DOTS可谓是目前Unity最重要的发展方向之一。但是很多人说,DOTS简直是一个新的引擎,那么DOTS究竟有什么好处,值不值得我们投入学习呢?我们先来看看DOTS都有什么更新吧。
DOTS示例项目:https://github.com/Unity-Technologies/DOTSSample
DOTS编写代码更简单了
了解过ECS的童鞋可能直到,编写ECS代码代码量会大幅增加。Unity的ECS系统也是在做各方面的优化,使得在易用性和性能方面取得平衡。
其他的还有
- DOTS的动画系统
- DOTS NetCode:基于DOTS的网络库
- Unity Physics:基于Job System和Burst Compiler的物理库
- 转换工作流:可以将GameObjects转换为ECS中的entities的工具。
- Unity Live Link(实验阶段):有点类似实时热更新,但目前仅局限于资产。在编辑器中修改后,可以直接在发布的客户端中查看到变化。
下面动图中可以看到,编辑器中做的修改,可以实时同步到已经发布出来的程序中。
直播《聊一聊2019.3的新功能》回放:https://www.bilibili.com/video/av85824703
Unity2019.3的新功能视频教程将会在《大话Unity》中更新。