Unity-Unity2018.x

复制这段内容打开「百度网盘APP 即可获取」
https://pan.baidu.com/s/1cP2NZUhntvbWGLl1hRU66g

Unity2018新特性

一、新渲染架构

新渲染架构:Scriptable Render Pipeline

二、SRP

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

三、Shader Graph

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

你可以通过可视化的方式来创建Shader Graph以生成所需的着色器,无需再手动编写着色器代码,只需通过连接各种节点创建节点网络即可。

四、C# Job System

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

五、实体组件系统ECS

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

六、Burst Compiler

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

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

八、纹理Mipmap流

纹理Mipmap流

九、新增一个选项目标架构

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

十、Google Play Instant Games插件

Google Play Instant Games插件

十一、结束对UnityScript的支持

结束对UnityScript的支持

十二、Visual Studio Code调试器扩展

Visual Studio Code调试器扩展

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

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

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

编辑器用户偏好设置改进

十五、影视相关Timeline和Cinemachine改进

影视相关Timeline和Cinemachine改进

十六、地形系统改进

地形系统改进

十七、资源包管理器

资源包管理器

十八、Unity Hub改进

Unity Hub改进

十九、代码移除等级

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

二十、内存分析器Memory Profiler

内存分析器Memory Profiler

二十一、Android App Bundle

Android App Bundle

二十二、TextMesh Pro

TextMesh Pro

二十三、Visual Effect Graph(预览版)

Visual Effect Graph(预览版)

二十四、Project Tiny小游戏开发套件

Project Tiny小游戏开发套件

Unity 2018 LTS

注意:按照发布顺序遵循本节中的建议。例如,如果需要将项目从 2018 升级到 2020,请阅读 2019 升级指南,了解在阅读 2020 升级指南之前是否需要进行任何更改。

本页列出了 Unity 2018 LTS 中的更改,这些更改可能会在从 Unity 2017 版本升级时影响现有项目。

请注意,2018 LTS 也称为 2018.4


一 、改进的预制件

  • 预制件
    自动升级到新的预制件系统
  • 为了支持预制件嵌套,预制件工作流程已更改。要编辑预制件,您现在需要在预制件模式下打开它们。您无法再在“项目浏览器”中编辑预制件。
  • 您还可以在预制件模式下进行结构更改,例如删除游戏对象
    ,重新设置游戏对象的父级,或将 Transform 替换为 RectTransform。或者,如果您想要完全删除预制件实例与其预制件资源的链接,从而能够根据需要重构生成的普通游戏对象,则可以解压缩该实例。您无法再断开预制件实例的连接。
  • 创建游戏对象的编辑器工具应使用 ObjectFactory.CreateGameObject 来确保游戏对象最终位于预制件中现场
    如果预制件资源当前正在预制件模式下进行编辑。
  • 作为安全预防措施,脚本
    如果打开的预制件上的任何脚本具有该属性,则 [ExecuteInEditMode] 属性会导致编辑器在进入播放模式时退出预制件模式。有关如何使此类脚本与预制件模式兼容的详细信息,请参阅 ExecuteInEditMode 和新 ExecuteAlways 属性的脚本参考页。
  • 不再可能从脚本对预制件资源进行任意修改,因为预制件现在是导入的资源。相反,您需要使用 PrefabUtility.LoadPrefabContents、PrefabUtility.SaveAsPrefabAsset 和 PrefabUtility.UnloadPrefabContents
  • 如果使用 AssetDatabase.AddObjectToAsset 向预制件添加其他资源,则现在必须在添加必需对象后调用 PrefabUtility.SavePrefabAsset

返回页首

二、USS flex 速记扩展现在遵循 CSS 标准

  • USS flex 指令现在最多接受三个参数,分别表示 和 。flex-shrink 和 flex-basis 参数是可选的。如果省略,则 flex-basis 默认为 0,flex-shrink 默认为 1。flex-grow``flex-shrink``flex-basis
  • 在 2018.3 之前,相当于 .现在,它遵循 CSS 标准,使其等同于 .为了保留旧的语义,您应该在 USS 文件中替换所有指令。flex: N``flex N 0 auto``flex: N 1 0``flex: N``flex: N 0 auto

返回页首

三、支持在托管用户线程中记录未经处理的异常

  • 在 2018.3 之前,Unity 编辑器不会记录托管用户线程中引发的未经处理的异常。从 2018.3 开始,托管用户线程中引发的未经处理的异常将记录在 Unity 编辑器控制台上。
  • 由于日志记录现在包括所有托管用户线程,因此您可能会看到始终在项目中引发的异常,但直到现在才发送到控制台。

返回页首

四 、VFACE着色器变量现在在DirectX(11和12)中反转

  • VFACE公司着色
    变量在呈现到 DirectX 和其他图形 API 时不一致立方体贴图
    .现在它具有相同的行为。
  • 如果在 DirectX 着色器中使用 VFACE 布尔着色器变量来渲染立方体贴图,则必须翻转代码中的逻辑。
  • 请参阅问题 ID 1027670

返回页首

五 、将 PhysX 从 3.3.1 升级到 3.4.2

物理行为已更改,某些项目在新版本中的行为可能会有所不同。特别:

  • 触点贴片现在在持续触点歧管模式下最多包含 6 个触点。这比以前版本中每个补丁 5 个联系人有所增加。有合并歧管中的补丁的新代码,以及选择触点的新代码。碰撞
    似乎比以前准确得多。您可能需要处理依赖于特定联系人排列的项目,以使其与新代码兼容。当凸体与网格和基元碰撞时,您最有可能注意到这一点。
  • 现在使用一种新算法来计算与地形的接触。它曾经是特殊情况的,但现在它与 MeshColliders 使用的网格基元代码相同。它更强大、更准确且性能良好。但是,它不支持 TerrainData.thickness,这意味着现在可以对地形产生隧道效应。为避免这种情况,您需要启用连续碰撞检测
    在快速移动的物体上。在此之前,如果发现一个物体的深度不超过 TerrainData.thickness 下地形
    ,它会自动弹出,但法线从来都不正确。要恢复旧行为,请取消选中物理设置中的启用统一高度贴图选项。
  • 阴性*网孔*
    缩放
    在所有情况下,不再直接导致网格烘烤。凹面网格不再烘烤。但是,凸网格仍然需要缩放才能烘焙。通过此更改,当 scale.x * scale.y * scale.z < 0 时,负缩放会反转网格法线。此外,像以前一样,仍然需要烘焙诸如倾斜和剪切之类的非平凡缩放。
  • 网格膨胀已被弃用,因为新的凸包计算算法 (Quickhull) 似乎不需要它,该算法对输入网格中的各种缺陷更宽容。

返回页首

六、AssetBundle.mainAsset 属性已被标记为“已过时”

  • 在 5.0 之前的 Unity 版本中,用户必须使用 AssetBundleBuildAssetBundle API 构建资源包,这需要提供一个 Object,该对象将在使用 AssetBundle 的 mainAsset 属性加载时返回。
  • AssetBundle.BuildAssetBundle API 在 Unity 5.0 中被标记为过时,并被 AssetBundle.BuildAssetBundles 取代,这改变了从 AssetBundle 获取资源的方式。
  • 现在,您需要使用 AssetBundle.LoadAsset API 获取资产的名称或路径,才能从 AssetBundle 获取内容。请参阅有关构建 AssetBundle、原生使用 AssetBundle 和 AssetBundle 脚本 API 的文档。

返回页首

七、升级使用 NavMesh 组件的项目

  • 如果要将项目从 2018.2 或更早版本移动到 2018.3b,并且它使用NavMesh
    从 Unity 的 GitHub 存储库获取的组件,您现在需要使用此分支

返回页首

八、粒子系统错误修复

Unity 2018.3 包含一些粒子错误修复,这可能会影响在早期版本中创建的项目。

  • 使用非均匀变换比例时广告牌
    粒子,Y 轴和 Z 轴倒置。此问题现已修复。
  • 在网格粒子上使用非均匀变换比例时,缩放后应用旋转。这是 2017.x 中的回归。它在 5.6 及更早版本中表现正常,但在 2017 年周期中被打破。修复此 bug 会更正在 5.6 及更早版本中创建的内容,但会更改在 2017.x 中创建的内容。
  • 与树木相比,球形风带对颗粒物的影响相反。这已得到纠正,因此球形风区现在排斥粒子而不是吸引它们。您可以通过否定外力乘数或风区
    强度。Unity 无法自动更改此设置,因为带有树木或定向风区的场景可能会受到错误影响。

返回页首

九、C# 编译器升级到 Roslyn

在 2018.3 之前,Unity 编辑器在项目中编译 C# 文件时使用 mono C# 编译器 (mcs)。从 2018.3 开始,Roslyn C# 编译器 (csc) 用于面向新脚本运行时(.NET 4.x 等效项)的项目。切换到 Roslyn 可能会注意到不同的行为:

返回页首

十、删除了 UnityScript 和 Boo 脚本编译器

UnityScript (.js) 和 Boo (.boo) 脚本文件无法再在编辑器中编译。

有关详细信息,请参阅 2017 年 8 月的这篇博客文章,您可以使用 unityscript2csharp 工具将 UnityScript 转换为 C#。

返回页首

十一、Animator Root Motion 播放已更改

动画 师根运动
播放已略有更改,以更正在“动画窗口”中创作根运动动画时的一些不一致之处。

  • 不再需要为 AnimationClips 生成根运动曲线。Root Motion 的应用现在完全依赖于 Animator.applyRootMotion
2018.2 至 2018.4 等效值
生成的根运动动画师.applyRootMotion2018.22018.3 和 2018.4 (LTS)
一个是的是的累积应用 Root Motion根转换 .与 2018.2 相同
B应用在 AnimationClip 中创作的位置、旋转和缩放曲线。与 2018.2 相同
C*是的没有根转换移动应用在 AnimationClip 中创作的位置、旋转和缩放。
D*是的没有根转换移动在Root上累积应用Root Motion。

对于情况 C 和 D,要在 2018.3 中实现相同的结果,您需要实现 OnAnimatorMove,然后放弃,如果您不想应用 Root Motion。Animator.deltaPosition``Animator.deltaRotation

如果项目用于在根变换上“静音”位置、旋转和缩放动画,则需要手动覆盖根变换属性。applyRootMotion

返回页首

十二、UIElements.ContextualMenu 更改

菜单操作回调现在采用参数而不是参数。UIElements.ContextualMenu``ContextualMenu.MenuAction``EventBase

ContextualMenu.InsertSeparator`采用附加参数。`string

返回页首

十三、多人游戏:已删除已弃用的旧网络 API(基于 RakNet)

此功能在 Unity 5.1 中已弃用,现已删除。您无法再在 Unity 2018.2 的项目中使用它。

有关以下内容的更多信息,请参阅多人游戏和网络部分联网
在 Unity 中。

返回页首

十四、使用透明度导入 Photoshop 数据文件 (PSD)

当具有实际透明度时,Photoshop 将进行调整像素
颜色将它们与哑光(背景)颜色混合。如何准备 Alpha 通道文档中介绍了正确准备 Alpha 通道的过程。

您可以在本文档中忽略扩张,重要的部分是说明您希望具有具有单独 alpha 通道/蒙版(而不是透明度)的“不透明”图像。Unity 调整了颜色以“删除”遮罩,但自 2018.2 起已停止。如果您有透明的 PSD,您可能会开始在边缘看到白色。要解决此问题,请查阅上面的手动链接并制作实际的 Alpha 通道(而不是透明度)。

返回页首

十五、当 MonoBehaviour 的游戏对象被禁用或销毁时,从 MonoBehaviour 返回的协程将不再启动。

从历史上看,当游戏对象被禁用或销毁时,它会停止其子 MonoBehaviours 上所有正在运行的协程。但是,在某些情况下,从这些时间调用的方法(例如,)启动的协程以前是允许启动的。这会导致特定于组件顺序的行为,在某些情况下还会导致崩溃。OnBecameInvisible()

在 Unity 2018.1 中,在禁用或销毁游戏对象期间返回的协程将不再启动。

返回页首

十六、BuildPipeline API 现在返回 BuildReport 对象而不是字符串

BuildPipeline API(如 和 )之前返回了一个字符串。如果生成成功,则此值为空,如果生成失败,则包含错误消息。BuildPipeline.BuildPlayer``BuildPipeline.BuildAssetBundles

在 2018.1 中,它已被替换为新的 BuildReport 对象,该对象包含有关生成过程的更丰富的信息。

若要检查生成是否成功,请检索报表对象的属性,并检查其结果属性 - 这将是成功生成的属性。例如:summary``BuildResult.Succeeded

var report = BuildPipeline.BuildPlayer(...);

if (report.summary.result != BuildResult.Succeeded)
{
    throw new Exception("Build failed");
}

返回页首

十七、玩家退出通知已从消息更改为事件

以前,要在 Unity 独立播放器退出时收到通知,您需要在 MonoBehaviour 上实现该方法,并且要中止玩家退出,您可以调用 .OnApplicationQuit``Application.CancelQuit

引入了两个新事件。这些是 和 .您可以收听这些事件,以便在 Unity 独立播放器退出时收到通知。 当播放器打算退出时调用,侦听器必须返回 true 或 false。如果希望玩家继续退出,则返回 true,如果希望玩家中止退出,则返回 false。当玩家保证退出且无法中止时,将调用该事件。Application.wantsToQuit``Application.quitting``Application.wantsToQuit``wantsToQuit``Application.quitting

Application.CancelQuit`已被弃用,请改用。`Application.wantsToQuit
using UnityEngine;

public class PlayerQuitExample

{

    static bool WantsToQuit()

    {

        // Do you want the editor to quit?

        return true;

    }

    static void Quit()

    {

        Debug.Log("Quitting the Player");

    }

    [RuntimeInitializeOnLoadMethod]

    static void RunOnStart()

    {

        Application.wantsToQuit += WantsToQuit;

        Application.quit += Quit;

    }

}

十八、在 .NET 平台上弃用 AvatarBuilder.BuildHumanAvatar

此更改会影响以下运行时平台:WSAPlayerX86、WSAPlayerX64 和 WSAPlayerARM。

目前没有替代品。

十九、TouchScreenKeyboard.wasCanceled 和 TouchScreenKeyboard.done 已过时

有一个新的 TouchScreenKeyboard.status,可以查询它以涵盖已弃用的状态和更多状态。

二十、MonoDevelop 5.9.6 已从 Unity 安装程序中删除,Unity 中已弃用对它的支持。

MonoDevelop 5.9.6 已被 macOS 上的 Visual Studio for Mac 取代,成为 macOS 安装程序中的捆绑 C# 脚本编辑器。Visual Studio 2017 Community 现在是 Windows 上唯一随 Unity 一起安装的 C# 脚本编辑器。

当它安装在 Unity 可执行文件旁边的默认位置时,Unity 将不再识别MonoDevelop的
作为首选项中的“MonoDevelop(内置)”外部脚本编辑器。如果未在首选项中安装和选择 C# 代码编辑器,Unity 将使用系统默认应用程序打开 C# (.cs) 脚本。

二十一、BuildPipeline 回调接口现在采用 BuildReport 对象

BuildPipeline 回调接口: 和 已更改,因此它们现在需要您传入对象。这替换了之前构建路径/目标平台的参数;如果要实现这些接口,则需要更改代码。IPreprocessBuild``IPostprocessBuild``IProcessScene``BuildReport

构建路径和目标平台都可以通过对象访问。构建路径是 now,目标平台是 。BuildReport``report.summary.outputPath``report.summary.platform

返回页首

二十二、位于插件文件夹中的资源将不再通过专门的导入器导入

以前,位于插件文件夹(例如,扩展名为 .bundle、.plugin 或 .folder 的目录中)中的资源是使用专用导入器导入的。纹理通过纹理导入器导入,音频剪辑通过音频导入器导入,等等。现在,所有这些资源都将使用默认导入器导入,这意味着您将无法像以前那样引用这些资源,因为它们不再具有专用类型(纹理、音频剪辑等)。插件文件夹是包含包的,因此内部的资产不应从外部访问,除非通过插件访问技术。

要继续使用这些资源,您需要将它们移出插件文件夹。

返回页首

二十三、粒子系统网格粒子错误地应用了“枢轴偏移”(Pivot Offset)值

用于将枢轴偏移应用于网格的数学公式不正确,并且与它对 Billboard 粒子的工作方式不一致。为了获得正确的比例,枢轴偏移量应乘以粒子的大小,因此枢轴偏移量 1 等于粒子的一个全宽。

对于网格,尺寸被乘以两倍,这意味着枢轴量基于平方颗粒大小。这使得在包含不同大小颗粒的系统中无法获得一致的结果。

对于使用相同尺寸颗粒的系统,可以对公式进行逆向工程,以决定调整枢轴偏移量的幅度,以补偿这种行为变化:

旧公式:偏移量 = 尺寸 * 尺寸 * 枢轴

新公式:偏移量 = 大小 * 枢轴

因此,如果所有颗粒的大小相等:

newOffset = 枢轴 / 大小

在颗粒大小不同的系统中,有必要对相关系统进行视觉重新评估。

返回页首

二十四、GPU 实例化支持全局照明

从 2018.1 开始,全局照明
Unity 中的 GPU 实例化渲染支持 (GI)。每个 GPU 实例都可以支持来自不同光探针
光照贴图
(但地图集中的不同区域),或一个Light Probe 代理卷
组件(针对包含所有实例的空间卷烘焙)。标准着色器和表面着色器
这些更改会自动提供,但您需要更新自定义着色器代码才能启用这些功能。

返回页首

二十五、Handle Draw 和 Size 函数默认值

UnityEditor.IMGUI.Controls 命名空间中的复杂句柄(如 BoxBoundsHandle、CapsuleBoundsHandle、SphereBoundsHandle、ArcHandle 和 JointAngularLimitHandle)具有可分配给的委托,以便更改其控制点的外观。以前,将值 null 分配给这些委托将回退到默认行为。现在,为它们分配值 null 不会导致任何行为,从而更容易禁用特定控件句柄。如果需要将控件句柄重置为其默认行为,则每个类现在都具有默认方法的公共 API 点。

返回页首

二十六、现在,在 Unity 编辑器中编译“不安全”的 C# 代码需要启用选项。

编译“不安全”的 C# 代码现在需要在播放器设置
对于预定义的程序集(如 Assembly-CSharp.dll)和检查员
用于程序集定义文件程序集。启用此选项将使 Unity 在编译脚本时将 /unsafe 选项传递给 C# 编译器。

返回页首

二十七、“UnityPackageManager”目录重命名为“Packages”

在 2017.2 和 2017.3 中,Unity Package Manager 引入了 UnityPackageManager 目录,该目录用于存储名为 manifest.json 的文件。可以使用以
.

在 2018.1 中,UnityPackageManager 目录已重命名为 Packages,以便与打包资源的虚拟相对路径保持一致。manifest.json 文件应自动移动到新目录。

因此:

  • 如果您的项目使用版本控制
    系统 (VCS),例如Perforce的
    或 Git,则可能需要更新其配置以跟踪 Packages 目录而不是 UnityPackageManager 目录。
  • 如果项目使用 Nuget(或任何外部包管理器)的方式使其使用 Packages 目录,则应更改其配置以使用其他目录。建议这样做,以消除 Unity Package Manager 选取包的微小机会,这可能会导致难以调试的问题,例如编译错误或导入错误。
  • 迁移到新目录后,可以安全地删除 UnityPackageManager 目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许毅宏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值