5.x相对于4.x的区别:
- 规范化了资源管理,统一了所有组件的获取方式,如之前animator,material无需在awake或者start函数进行获取,可直接使用,现在全部要使用getcomponent的形式进行获取,
- 5.x收编了ngui的开发团队,开始整合ugui;
- 5.3 版本移除了发布模块和内置的资源包,让用户根据实际需求自行安装,减少了包体大小
- 优化了软件启动速度
- 打开界面的方式进行了转变,没有登陆就不能使用
- 5.4 版本内置了json解析
- 5.6版本引入新的解压方式,之前Unity压缩文件采取zip形式,也就是lzma 格式。因为压缩率高,所以压缩文件小,但是解压损耗时间就更多了。新的压缩方式lz4的压缩率没那么高(包体大),相对而言,解压速度就快,这就是空间与时间的问题。
- 5.6.6之后,固定更新日期,以2周或者1周为其进行发布
2017版本相对于5.x的区别 文章引用
- 增加了Timeline是一款强大的可视化新工具,可用于创建影视内容,例如过场动画、预告片、游戏试玩视频等等。
- Cinemachine是一个高级相机系统,您可以像电影导演一样,在Unity中合成镜头,无需编写任何代码,引领您进入程序化摄影时代。
- Post-processing可以很方便地为场景应用各种逼真滤镜,使用电影工业级技术、控件和颜色空间格式来创造高质量视觉效果,让画面更生动、更逼真,助您描绘更好的视觉故事。
- 我们发布了Unity Teams,它由一系列简化创作者协作流程的功能和解决方案组成,包含Collaborate多人协作(现已发布)和Cloud Build云构建。
- Unity 2017.1对粒子系统和Progressive Lightmapper进行了大量改进,提供了更多选择来实现您的艺术愿景并控制性能。不同平台可采用不同的渲染品质,例如iOS平台上的Deferred Rendering,和PC上的NVIDIA VRWorks。
- Unity 2017.1可以通过数据驱动的实时操作,随时获得丰富的分析数据。深入了解您的用户与您作品的互动情况,并实时做出相应的调整,迎合他们的习惯,无需重新部署新版本。在Unity 2017中,您可以更好地为用户提供更佳的游戏体验。
- 在Unity 5.6中,我们为2D游戏开发者对工具和工作流程进行了重大改进。Unity 2017.1中引入了 2D Sprite Atlas ,这是一种新的Asset,将取代Sprite Packer。随着它的出现,新改进的工作流程可以在运行时更好地控制精灵的打包和使用。图集是Unity中2D工作流程的重要组成部分,而精灵图集不仅提供了更简单的图集创建和管理方式,还有相应的脚本API,可获得更多的控制和用途。
- 我们对Animation窗口进行了全面修改,改进了关键帧的工作流程,使动画制作更方便和熟练,并支持与Animator状态机进行交互。Performance Recording是一个实验性功能。
- Playables API通过使用树状结构的PlayableGraph组织和评估数据来源,提供一种创建工具、特效或其他游戏机制的方法。PlayableGraph允许您混合和修改多个数据源,合成为单一输出后播放。
- 在Unity 2017.1中,我们增加了对环绕立体声音频剪辑的支持,这是全方位环绕音频技术,它(除了水平面外)还覆盖了听众上方和下方的声源。
- 我们在UnityEditor.IMGUI.Controls中添加了一个 新的ArcHandle类 ,它可以在场景视图中交互式地编辑弧线。还加入了名为SearchField的新IMGUI控件,它带有普通和工具栏用户界面风格,但也可以自行定制。
- 改进了对Visual Studio的支持,包括Mac OS,Unity安装程序现在可以选择在Windows上安装Visual Studio Community 2017(而非Visual Studio Community 2015)。安装速度显著提高也更轻量。
- 场景与Asset Bundle改进,我们对游戏中的场景和Asset Bundle进行了一些改进。更改底层架构使场景和Asset Bundle加载速度更快,从而使玩家体验更加流畅。我们还创建了一个工具,Asset Bundle浏览器——以帮助创建和优化Asset Bundle。
- Asset Bundle浏览器:Asset Bundle浏览器的Beta版与Unity 2017.1一同发布。该工具允许您在Unity项目中查看和编辑Asset Bundle的配置。它的目的是替换当前选择Asset的工作流,并在检视窗口中手动设置Asset Bundle的工作流程。现在您可以集中查看所有的Asset Bundle配置。通过使用上下文菜单和拖放功能,配置、修改和分析相关资源包。
- 脚本运行时升级(实验性):畅享 C# 6和.NET 4.6:在Unity 2017.1中,我们引入了实验性版本的脚本运行时内核,该内核已升级到Mono/.NET 4.6运行时。它包含了许多修复、性能改进,可以使用C# 6。我们相信它会提高游戏的整体性能。
- 模型导入器改进:从像Maya这样流行的数字内容创作(DCC)工具导入Asset的过程是首批重要的改进对象,这使得DCC工作流程变得更加轻松。最终提高了艺术家和设计师的生产力,减少了程序员的麻烦。
- Progressive Lightmapper改进:Unity 2017.1增加了Progressive Lightmapper中对烘焙LOD的支持。在烘焙LOD时,Enlighten和Progressive Lightmapper之间的主要区别在于,使用Progressive Lightmapper不必在LOD周围放置光照探针来获得反射光。在完全烘焙分辨率下,间接光照将为LOD提供更优质的烘焙光照贴图,您也可以避免为它们设置光照探针的繁琐过程。(Unity 5.6中也有此功能。)
- 实时阴影改进:我们优化了在稳定模式下,级联定向光源阴影投射器的选择。这意味着生成阴影贴图时会产生更少的Draw Call。这增益是与场景和配置相关的。例如,在四个级联光的情况下,可以看到Draw Call数量显著下降。根据太阳/摄像机的方向,场景中可以减少50%的阴影投射器。
- 粒子系统改进:我们引入了精灵集成,粒子碰撞力(可以推动碰撞器),大量形状方面的改进,包括一个新的形状类型,噪音模块增加了新选项,以及其他一些较小的特性和增强。因为增加了新的控制和约束,例如速度与对齐,使得在2D中使用粒子更加轻松。可以使用粒子来获得比以往更多的特效和动画效果,包括光线的线条和尾迹。
- Windows Store现在改名为Universal Windows Platform:Unity现在支持Windows商店的Universal Windows Platform(UWP)应用模式,支持为Xbox One、Windows 10、Windows Phone 10和HoloLens进行构建。
- 底层原生插件渲染扩展:我们已经扩展了底层渲染插件API,并提供了一些很酷的新特性:
现在可以将用户数据发送到回调函数。
我们已经扩展了插件将接收回调的可能事件列表。
我们在着色器编译器进程中添加了钩子,可以在发送到编译器之前对着色器打补丁。支持创建自定义关键字所控制的自定义变体。 - VR: NVIDIA VRWorks
现在,在Unity 2017.1中,NVIDIA VRWorks通过以下特性,为虚拟现实提供了一种全新高度的视觉保真度、性能和响应能力:
2018版本相对于2017版本的区别 文章引用
- 新渲染架构:Scriptable Render Pipeline
Scriptable Render Pipeline可编程脚本渲染管线,简称SRP。是一种在Unity中通过C#脚本配置和执行渲染的方式。 - 着色器可视化编程工具Shader Graph
你可以通过可视化的方式来创建Shader Graph以生成所需的着色器,无需再手动编写着色器代码,只需通过连接各种节点创建节点网络即可。 - C# Job System
随着我们在Unity 2018.1中推出新的高性能多线程系统,我们正在重构Unity的核心基础。新的系统将使你的游戏完全利用当下的多线程处理器,不用再为编程而烦恼。 - 实体组件系统(ECS)
在Unity 2018.2中,我们加入了多个改进内容,包括反应系统(Reactive system)示例。反应系统将使你在组件状态发生变化时做出反应,并模拟由事件驱动的行为。 - Burst Compiler
Burst是一个编译器,它使用LLVM将IL / .NET字节码转换为高度优化的本机代码。它作为Unity包发布,并使用Unity Package Manager集成到Unity中。 - 移除了独立播放器构建中对Windows XP的支持。Windows Vista现在是Windows独立播放器所支持的最老操作系统。
- 放弃了对MonoDevelop-Unity的支持,意味着现在Visual Studio是MacOS和Windows系统上的推荐和支持的C#编辑器。Windows系统上的推荐和支持的C#编辑器。
- 逐步移除旧粒子系统 新的系统Shuriken
- 纹理Mipmap流
- 现在新增一个选项用来根据目标架构,如x86、ARM 32和ARM 64分离出多个APK文件,而不是生成一个较大的APK文件。然后,对于支持此选项的商店,例如Google Play,你只需要下载相应架构的APK文件即可。
- Google Play Instant Games插件
- 结束对UnityScript的支持
- Visual Studio Code调试器扩展
- 预制件嵌套和改进的工作流程
- 编辑器用户偏好设置改进
- 影视相关Timeline和Cinemachine改进
- 地形系统改进
- 资源包管理器
- Unity Hub改进
- 代码大小移除等级(Stripping Level)选项已替换为托管移除等级(Managed Stripping Level)选项
- 内存分析器Memory Profiler
- Android App Bundle
- TextMesh Pro
- Visual Effect Graph(预览版)
- Project Tiny小游戏开发套件
2019版本 文章引用
- HDRP;高清渲染管线(High Definition Render Pipeline)预览版
- LWRP;轻量级渲染管线(light Weight Render Pipeline)
- Visual Effect Graph;预览版
- Adaptive Performance移动平台自适应性功能(预览版)
- Shortcut Manager快捷键管理器
- Android Logcat集成(预览版)
- AR Remote(预览版)
- Burst编译器
- Unity Physics(预览版)
- 新的音频渲染和混合工具(实验性)
- .基于DOTS技术的物理系统;Profile Analyzer(预览版)
- 增量式垃圾回收(实验性)
- Quick Search快捷搜索(预览版)
- .Animation Rigging动画绑定(预览版)
- Unity Hub 2.0 Beta
- .UI Elements
- Scene Visibility场景可视化工具
- GPU光照贴图(预览版)
- 编辑器内的异步着色器编译
- HDRP改进
- 光照质量和控制
- 反射系统改进
- .Shder Graph;着色器视图改进
- 图形和光照改进
- 艺术创作工具
- Timeline Signals信号功能
- Mobile Notifications(预览版资源包)
- 使用Unity Hub安装Android SDK和NDK
- Scripts Only Build
- AR Foundation
- LWRP支持AR和VR
- 立体渲染模式回退功能
- 立体实例化的后期处理支持
- WebGL
- Async Compute异步计算
- Windows平台的ARM64支持
- PhysX改进
- 物理多场景改进
- 性能分析器更新
- ScriptableObjects可编程对象
- 软引用 现在丢失程序集定义文件引用时会被无视,不会产生丢失引用的错误,它允许开发者给asmdef程序集添加引用。
- Version Defines版本定义通过使用Assembly Definition检视窗口的全新Version Defines版本定义功能,开发者可以定义哪些C#预处理指令会根据项目有关的资源包版本范围和模块而设定,这样允许开发者在可选资源包中用#if指令处理C#代码。
- 在Unity 2019.1中,在项目窗口选中预制件时,便可在检视窗口编辑预制件资源。这意味着开发者不必在预制件模式打开预制件或把预制件拖入场景,才能编辑预制件
- 编辑器的控制台,加入点击式跟踪链接,它会转到堆栈中列出的函数调用对应的代码行,还加入了搜索工具,以便筛选控制台条目。
- 在编辑器内查看资源包和核心依赖,从GitHub代码库直接安装资源包,并行管理私有和Unity托管的注册表。新版资源包管理器包含对程序集定义文件引用的支持,详见Version Defines版本定义部分。
- Sketchup Importer现在拥有新的UI。我们添加了对摄像机导入的支持,可以导入Sketchup中所有摄像机类型,包括:正交摄像机、透视摄像机和Two-Point摄像机。最后,我们提升了Model模型导入器Material Tab UI的性能。
- Timeline Signals(Timeline信号)是Timeline中用来交互场景对象的简单方法。通过使用信号发射器和信号资源,触发游戏中的信号接收器,然后它会向Timeline定义一组预配置反应。Signal Emitter信号发射器用于在Timeline经过特定时间点的时候,触发场景状态的改动。
- Unity 2019.1加入了对H.265视频编码的支持,这可以让用户播放H.265影片,也可以把其它支持的视频格式转码为H.265编码格式。
- U nity的Video Player视频播放器和Video Recorder视频录制器现在完全支持SRP,因此在通过HDRP或LWRP进行渲染时,视频播放器可以回放视频。
- Sprite Shape资源包加入了多项改进,例如:你可以让Sprite Shape的最终2D碰撞体在形状上更符合精灵的外观效果,允许添加更适合Sprite Shape Renderer的多边形碰撞体和边缘碰撞体。
- 使用新版2D Animation V2.1版资源包在编辑器内和运行时蒙皮精灵时,你会注意到性能提升,因为新版资源包是通过C# Job System和Burst编译器构建的。如果屏幕上有多个使用该工具制作动画的角色,此次更新也提升了这种情况下的性能。
- 所有2D物理查询现在允许提供结果缓冲区作为.Net “List”,而之前版本需要使用数组。它和数组有相同的优点,如果列表的容量足够包含查询结果,就不会分配任何内存。
- 你现在可以使用C# Job System处理粒子数据,不必在脚本和本地代码之间复制粒子数据。设置时,请创建基于IParticleSystemJob的作业结构,使用SetJob将它附加给粒子系统,在执行本地粒子更新后,该作业结构会从线程中调用。
- 网格改进Unity 2019.1包含对网格粒子的一些小改进,例如:通过脚本可以进行查询和指定到每个粒子的网格。
- Optix AI Denoiser是一种基于深度学习的降噪器,它使用路径跟踪图像库进行训练。这是对过滤选项的重大改进,在样本数量较少的情况下,它可以灵活应变漏光和模糊情况。它可以结合其它过滤器,实现更加平滑的光照贴图。
- MIS Environment是一种对Cubemap /HDRI中最重要区域进行采样的新方法。这项技术会避免发射大量GI光线到半球体,把光线聚焦于重要区域,例如:太阳明亮的位置。
- 其它光照改进
- 用于查看资源的实验性功能LookDev已被移除,我们会继续改进该功能,在今年晚些时候重新添加到SRP,并提供LWRP和HDRP支持
- Unity编辑器会推迟着色器编译过程,直到渲染过程首次需要特定着色器变体。但是这可能会导致编译器停顿现象,因为着色器编译器的处理需要大量时间。
- 现在可以对每个顶点使用32个骨骼影响,通过蒙皮网格渲染器的API,最多可以使用255个骨骼影响。这样会在运行时保持蒙皮权重保真度和外部程序的原始内容一致。
2020版本相对于2019版本的区别 [文章引用]
- UI Toolkit(原UI Elements)预览版可以在游戏运行时中试用了
- 在场景中可以直接编辑Prefab
- Asset Store没办法在编辑器中直接访问了
- Build Report Inspector工具
- 可以打开多个Inspector窗口
- 编辑器扩展增加了异步任务API和后台任务窗口
- 进度条窗口更新
- FBX轴向调整
- Accelerator增加了Web管理面板
- Presets功能更新
- 项目模板不再包含在Unity安装包中
附加各个版本Unity对应C#版本
Unity 2020.2 C#8 2020.2将支持除默认接口方法外所有C# 8的新功能特性与改进。
Unity 2018.3 C#7.3
Unity 2018.2 C#7.2
Unity 2017.1 C#6 .Net 4.6
Unity 5.5 C#4.0
- C#8.0新特性
Nullable reference types:可空引用类型
Default interface members::默认接口成员
Recursive patterns:递归模式
Async streams:异步流
Enhanced using:增强using
Ranges and indexes:范围和索引
Null-coalescing assignment: Null合并分配
Static local functions:静态本地函数
Unmanaged generic structs:非托管泛型structs
Readonly members:只读成员
Stackalloc in nested contexts:嵌套上下文中的Stackalloc
Obsolete on property accessors:属性访问器已经过时
Permit t is null on unconstrained type parameter:不受限制的类型参数的许可 - C#7.3新特性
System.Enum, System.Delegate and unmanaged constraints:泛型约束,枚举、委托和非托管
Ref local re-assignment:现在可以使用ref分配运算符(= ref)重新分配 Ref locals和ref参数。
Stackalloc initializers:现在可以初始化堆栈分配的数组
Indexing movable fixed buffers:索引可移动固定缓冲区
Custom fixed statement:自定义fixed语句
Improved overload candidates:改进重载候选项
Expression variables in initializers and queries:初始化和查询中的表达式变量
Tuple comparison:元组比较
Attributes on backing fields:后备字段属性 - C#7.2新特性
Span and ref-like types ref-like类型的编译安全规则
In parameters and readonly references:值类型的引用语法
Ref conditional:条件ref
Non-trailing named arguments:不在尾部的指定名字参数
Private protected accessibility:访问修饰符
Digit separator after base specifier:前缀数字(非十进制)分割 - C#7.1新特性
Async main:异步Main方法
Default expressions:默认表达式
Reference assemblies:参考程序集
Inferred tuple element names:推断元组元素名称
Pattern-matching with generics:泛型的模式匹配 - C#7.0新特性
Out variables:out变量直接声明,例如可以out in parameter
Pattern matching:模式匹配,根据对象类型或者其它属性实现方法派发
Tuple 元组
Deconstruction:元组解析
Discards:舍弃
Local Functions:本地函数
Binary Literals:二进制文字
Digit Separators:数字分隔符
Ref returns and locals:Ref返回和临时变量
Generalized async return types:异步返回类型的广泛支持
More expression-bodied members:更多表达式化的成员体
Throw expressions:抛出表达式 - C#6.0新特性
Draft Specification online
Compiler-as-a-service (Roslyn)
Import of static type members into namespace:支持仅导入类中的静态成员
Exception filters:异常过滤器
Await in catch/finally blocks:支持在catch/finally语句块使用await语句
Auto property initializers:自动属性初始化
Default values for getter-only properties:设置只读属性的默认值
Expression-bodied members:支持以表达式为主体的成员方法和只读属性
Null propagator (null-conditional operator, succinct null checking):Null条件操作符
String interpolation:字符串插值,产生特定格式字符串的新方法
nameof operator:nameof操作符,返回方法、属性、变量的名称
Dictionary initializer:字典初始化 - C#5.0新特性
Asynchronous methods 异步方法
Caller info attributes:调用时访问调用者的信息
foreach loop was changed to generates a new loop variable rather than closing over the same variable every time - C#4新特性
Dynamic binding:动态绑定
Named and optional arguments:命名参数和可选参数
Generic co- and contravariance:泛型的协变和逆变
Embedded interop types (“NoPIA”):开启嵌入类型信息,增加引用COM组件程序的中立性