Unity2018更新日志大总结

      题外话:写篇文章的主要动力来源还是看了Unity2018.3.0发布视频(地址:https://v.qq.com/x/page/z0815ok9b0l.html)之后对我带来的惊喜和冲动。刚好公司项目组也有员工分享会,所以就想把这些内容整理一下分享更大家。同时给Unity官方这次更新内容点个赞,新内容确实不错。

文章内容主要主要根据Unity2018的三个版本(1.0,2.0,3.0)进行整理,都是主要核心功能,并不是这次更新的所有内容。

1.0版本主要功能:

1、新渲染架构:Scriptable Render Pipeline

        Scriptable Render Pipeline可编程脚本渲染管线,简称SRP。是一种在Unity中通过C#脚本配置和执行渲染的方式。

渲染入口点

        当使用SRP时,你需要定一个类,用于控制渲染;这就是你将要创建的渲染管线。入口点是一个对“Render”函数的调用,它需要两个参数,渲染上下文以及一个需要渲染的摄像机列表。

public class BasicPipeInstance : RenderPipeline

{

  public override void Render(ScriptableRenderContext context, Camera[] cameras){}

}

        简单介绍一下什么是渲染上下文:SRP渲染采用的是延迟执行的方式。用户要设置好需要执行的命令列表,然后再执行。用来设置这些命令的对象叫做“ScriptableRenderContext”。当你向上下文填充完操作命令后,可以通过调用“Submit”提交队列中的所有绘制调用。

        渲染的摄像机列表就是游戏中的Camera了,一个游戏画面有可能有多个相机绘制,最终叠加或拼凑出一个显示画面。所有需要把这些相机都放到一个数组列表内传入到Render。

2、着色器可视化编程工具Shader Graph

        你可以通过可视化的方式来创建Shader Graph以生成所需的着色器,无需再手动编写着色器代码,只需通过连接各种节点创建节点网络即可。简单的讲就是官方出了一个类似Shader Forge的插件,简单操作如下图:


3、C# Job System

        随着我们在Unity 2018.1中推出新的高性能多线程系统,我们正在重构Unity的核心基础。新的系统将使你的游戏完全利用当下的多线程处理器,不用再为编程而烦恼。

        这得益于全新的C# Job System,它为用户提供了一个安全简易的沙盒环境,能够在里面编写并行代码。我们还引入了新的模型来默认使用实体组件系统(ECS)编写高性能代码,并使用Burst Compiler声称高度优化的本地代码。

        有了默认提供的高性能,你不仅可以在更多的硬件上运行自己的游戏,还能使用更多的单位和更复杂的模拟效果来创建更丰富的游戏世界。

4、实体组件系统(ECS)

        在Unity 2018.2中,我们加入了多个改进内容,包括反应系统(Reactive system)示例。反应系统将使你在组件状态发生变化时做出反应,并模拟由事件驱动的行为。

        ECS是什么?简单来说就是Unity中的一种新的架构模式。准备未来取代GameObject / Component的模式。其模式遵循组合优于继承原则,游戏内的每一个基本单元都是一个实体,每个实体又由一个或多个组件构成,每个组件仅仅包含代表其特性的数据(即在组件中没有任何方法)。系统便是来处理拥有一个或多个相同组件的实体集合的工具,其只拥有行为(即在系统中没有任何数据)。实体与组件是一个一对多的关系,实体拥有怎样的能力,完全是取决于其拥有哪些组件,通过动态添加或删除组件,可以在(游戏)运行时改变实体的行为。

        ECS旨在比GameObject / MonoBehaviour更容易处理大量物体。

        ECS的特点是,由于面向数据的设计 , 很容易并行高速处理,和 C# Job System 一起工作。

5、Burst Compiler

        Burst是一个编译器,它使用LLVM将IL / .NET字节码转换为高度优化的本机代码。它作为Unity包发布,并使用Unity Package Manager集成到Unity中。

        Burst主要用于与Job系统高效协作。您可以通过使用属性[BurstCompile]装饰Job结构,从而在代码中简单地使用burst编译器 。默认情况下,在编辑器中,Burst JIT是通过异步来编译job,但在上面的示例中,我们使用该选项CompileSynchronously = true确保在第一个Schedule中编译该方法。通常,您应该使用异步编译。

6、移除了独立播放器构建中对Windows XP的支持。Windows Vista现在是Windows独立播放器所支持的最老操作系统。

        说白了就是不支持XP电脑了,现在确实好多游戏慢慢都都不支持XP系统了,包括LOL,据说2019年春节的10.0版本就不在支持XP系统完了,主要是微软很早就停止了对XP系统的支持。就连现在Unity2018也必须在window10下面才可以运行。

7、放弃了对MonoDevelop-Unity的支持,意味着现在Visual Studio是MacOS和Windows系统上的推荐和支持的C#编辑器。

        自从官方推出IL2CPP之后,就意味着Mono的终结迟早要来,现在只是IDE的不支持,未来有可能完全放弃Mono。给大家推荐一款牛逼的IDE,也是现在市面上比较火的VS Code,这个也是微软轻量级的IED,功能缺失非常强大,主要还是因为开源,外围插件太丰富了。有兴趣的可以了解一下。

8、逐步移除旧粒子系统 新的系统Shuriken

        这个没啥说的,旧的粒子系统应该是3.x版本的了,我记得4.x就已经使用Shuriken忍者粒子系统了。

2.0版本主要功能:

1、更新可编程渲染管线SRP

2、更新着色器视图Shader Graph(预览版)

3、更新对Vulkan支持(实验版)

        Unity 2018.2包含在Windows和Linux端编辑器运行Vulkan的支持。Vulkan是新一代图形和计算API。它可以对PC、主机、移动端和嵌入式平台的各类设备上的GPU提供高效的跨平台访问功能。

4、纹理Mipmap流

        1、在Unity 2018.2中,我们根据需要向内存添加了纹理Mipmap流支持,启用此功能可以减少Unity应用的纹理内存要求。

        2、启用此系统后,Unity将仅在网格靠近已激活的摄像机时,加载更高分辨率的纹Mipmap。高分辨率Mipmap数据保存在内存中,整体的纹理内存会限制在用户定义的预算范围内。

        3、如果在加载新的纹理Miplevel后,纹理内存超出预算,那么与摄像机距离最远网格上的较高分辨率Midmap会从内存中释放出来。

        4、由于首次加载的纹理数据减少,即仅加载较低分辨率Mipmap,初始场景的载入速度也会加速。初始加载速度的提升效果将根据平台有所不同。

        5、你可以完全控制Texture Mipmap Streaming系统,决定哪些Mipmap会加载到内存中。通常Unity会加载所有存储在硬盘上的Mipmap,但使用此系统,你可以直接控制要加载哪些Mipmap等级。

        6、该系统还会占用一小部分的CPU时间,从而节省大量的GPU内存。

        7、启用和管理过程十分简单通过质量设置(Quality Setting)可以轻松启用该功能,你可以定义每个纹理是否应进行流式处理,你也可以查询指标,以识别纹理内存的使用情况,同时还能节省内存。你还可以调整各种设置来控制系统,从而平衡内存节省和CPU消耗,并允许你优先处理一些纹理,例如:将角色纹理优先于环境纹理。


5、根据架构分离APK文件

        现在新增一个选项用来根据目标架构,如x86、ARM 32和ARM 64分离出多个APK文件,而不是生成一个较大的APK文件。然后,对于支持此选项的商店,例如Google Play,你只需要下载相应架构的APK文件即可。


6、Google Play Instant Games插件

        获取新用户的一大阻碍往往是因为繁琐的安装过程。下载并打开应用程序需要花费时间,这会导致不少用户还没体验游戏之前就放弃。

        有了Google Play Instant,用户不需要预先安装就可以尝试体验游戏的10MB版本。此插件简化了基于Unity的Android应用转换为即时应用的过程,并可以通过Google Play Instant来进行部署。

该插件在GitHub上作为一个项目提供,并且能在Unity 2017.x及更高版本上使用。

        该插件的功能包括:

        1、可在已安装(Installed)和即时构建(Instant-build)模式之间切换的选项。

        2、带有Unity构建设置上的集中式视图和Android安装包设置,这些设置经过修改后能够支持Google Play Instant。

        3、能够在连接ADB的Android设备上构建并运行即时应用。

7、结束对UnityScript的支持

        C#、UnityScript、Boo。这三种Unity最早支持的开发语言,现在只剩下c#一种了,boo是最早被淘汰的。

8、Visual Studio Code调试器扩展

    对于使用Visual Studio Code作为IDE的用户,我们开发并维护了Visual Studio Code Debugger for Unity扩展,它目前作为预览版推出。


PS:Unity 2018.2还包括183项改进内容和1426个错误修复。


3.0版本主要功能:

1、预制件嵌套和改进的工作流程

        官方演示视频 https://v.qq.com/x/page/q0708i3vd0p.html

主要分为下面三个功能点,这是2018的大功能,详细内容可以自行谷歌查找,这里就不展开写了。

        1 、预设模式 (Prefab Mode)

        2、预设嵌套功能(Nested Prefab)

        3、预设变体(Variants Prefab)

2、编辑器用户偏好设置改进

        1、入口改变了,以前的那个地方找不到偏好设置了。同时新的窗口外观

        2、新的窗口外观还提供了一个API,方便开发者可以插件自定义到偏好设置里面


3、影视相关Timeline和Cinemachine改进

        1、Timeline添加了权限的轨道偏移模式、改进了编辑器的预览功能

        2、Cinemachine加入了物理摄像机支持,事件映射器和一个具有可交互展示功能的程序化噪声编辑器。我们可以通过可视化噪声编辑器,调整Cinemachine摄像机的逼真感。

4、地形系统改进

        主要包括:性能提升、多地形支持、新资源类型

5、资源包管理器

            资源包管理器可为项目动态加载和更新Unity开发的功能,帮助开发者快速获取Unity的新功能。随着更多Unity功能以资源包格式提供,我们正在稳步改进用户体验,从而帮助开发者更轻松地发现可用资源包和更新,并管理项目中已安装的资源包。


6、Unity Hub改进

        2018年9月,我们发布了Unity Hub v1.0,Unity Hub是一个连接Unity的桌面端应用程序,旨在通过提供管理Unity项目、许可证和附加组件的中心化位置,来简化所有用户的使用和制作流程。Unity Hub v1.2加入了通过Unity下载存档URL来直接下载和安装旧版Unity编辑器的功能。依赖特定(旧版)编辑器版本的用户可以通过Unity Hub一键获取旧版编辑器。


7、代码大小移除等级(Stripping Level)选项已替换为托管移除等级(Managed Stripping Level)选项


8、内存分析器Memory Profiler

        Memory Profiler这个分享工具在5.x就有了,只是在github上面自己下载导入工程,这次更新了一下功能,但是还是预览版本,不过可以通过资源包管理器在Unity编辑器内直接下载使用了。


9、Android App Bundle

        Android App Bundle是Google Play全新的应用发布格式,包含游戏中所有已编译的代码和资源,但它会推迟APK生成和Google Play签名。

        Google Play的新版应用服务模型Dynamic Delivery,它会使应用程序包根据用户的设备配置来生成并提供优化过的APK文件,因此用户只需下载运行应用所需的代码和资源即可。

开发者不再需要构建、签名并管理多个APK来为多个不同设备提供支持,而用户则能下载到更小的优化过的文件。


10、TextMesh Pro

        Unity 2018.3的TextMesh Pro是验证过的资源包,它加入了高度优化的Font Generator字体生成器,可在运行时生成字形。

        你可以通过调用混合动态字体系统(Hybrid Dynamic Font System)来结合项目中的静态字体资源和动态字体资源。


11、Visual Effect Graph(预览版)

        全新的Visual Effect Graph在Unity 2018.3中作为预览版提供,需结合HDRP使用。你可以使用它来制作可配置,可重用的次世代效果,还可以在GPU上处理数百万个粒子。

        Visual Effect Graph受到主流电影特效软件的启发,提供了灵活且易于使用的节点系统,能够帮助艺术家为游戏等交互式内容创作惊艳的视觉效果。

Visual Effect Graph演示项目地址:

https://v.qq.com/x/page/k0769n77dao.html

观看Visual Effect Graph介绍视频地址:

https://v.qq.com/x/page/b08075aao63.html

12、Project Tiny小游戏开发套件

        Project Tiny是Unity的一个全新模块,提供了全新的运行时和编辑器模式,旨在构建可以即时加载而无需安装的游戏和体验。

Project Tiny为开发者提供了快速创建高质量2D小游戏和可玩式广告所需的工具,创建出的游戏安装包非常之小,可以在各种移动设备上快速启动。


13、Unity FPS示例项目

在今年10月Unite LA上,我们正式发布了FPS示例项目,这是一款第一人称多人射击游戏的演示项目。该项目旨在成为开发者的灵感源泉,你可以用它来学习Unity中的新功能。

视频演示地址:

https://v.qq.com/x/page/m07701z9c8g.html

Unity FPS示例项目下载地址:

https://github.com/Unity-Technologies/FPSSample


14、除此之外还更新了:物理功能:PhysX 3.4、多场景物理、垃圾回收控制、NET 4.x Equivalent脚本运行时、C# 7.3:Roslyn编译器、用于重新压缩下载资源包的运行时API、寻路系统更新、2D功能更新一些了新功能、粒子系统、光照更新、AR、XR等等内容

PS:Unity 2018.3正式版中包含新增45项功能,250项改进,以及1915个Bug修复

推荐阅读更多精彩内容