升级到Unity 5.4

升级到Unity 5.4

当将项目从Unity 5.3升级到Unity 5.4时,有一些更改,您应该注意哪些可能会影响您现有的项目。

网络:多人服务API更改

许多更改联网API

网络:WebRequest不再实验

该WebRequest接口已经从推广UnityEngine.Experimental.Networking到UnityEngine.Networking。使用统一5.2和5.3的项目UnityWebRequest将必须被更新。

场景视图:音频映射不会自动应用

与图像效果ImageEffectTransformsToLDR属性将如果发现不再直接应用到场景图。一个新的属性存在应用效果的场景观点:ImageEffectAllowedInSceneView。5.4标准资产已升级,以反映这种变化。

着色器:重命名的变量

为了一致性,重命名了一些内置着色器变量:

_Object2World_World2Object现在unity_ObjectToWorldunity_WorldToObject

_World2Shadow现在unity_WorldToShadow [0] _World2Shadow1unity_WorldToShadow [1]等。

_LightMatrix0现在unity_WorldToLight

_WorldToCamera_CameraToWorld_Projector_ProjectorDistance_ProjectorClip_GUIClipTextureMatrix现在都前缀统一

当导入它们时,变量引用将在.shader和.cginc文件中自动重命名。但是,导入后,着色器在Unity 5.3或更早版本中不可用,无需手动重命名变量。

着色器:均匀数组

在Unity 5.4中,处理着色器属性数组的方式已更改。现在有“原生”浮法/矢量/矩阵阵列着色器支持(通过MaterialPropertyBlock.SetFloatArray,Shader.SetGlobalFloatArray等等)。这些新的API允许最多1023个元素的数组。

使用数为后缀名字指的是单独的数组元素的老办法已被弃用(例如_Colors0,_Colors1在这两个)Material和MaterialPropertyBlock。这种特性,与序列化Material不再能够设置数组元素(但如果任何均匀阵列的名字是由多个后缀它仍然有效)。

着色器:5.4中的其他变化

默认着色器编译目标已更改为“#pragma target 2.5”(DX9上为SM3.0,WinPhone上为DX11 9.3功能级别)。您仍然可以使用“#pragma target 2.0”来定位DX9 SM2.0和DX11 9.1功能级别。

大多数内置着色器目标2.5:值得注意的例外是Unlit,VertexLit和固定函数着色器。在实践中,这意味着大多数内置着色器和新创建的着色器,默认情况下,不会对PC的GPU见2004年之前是由工作的这篇博客文章的详细信息。

在Material类的构造函数Material(string),这是已经过时,停止工作在5.4。使用它将打印错误并导致洋红色错误着色器。

用于计算屏幕空间定向光阴影的内部着色器已移至图形设置。如果您通过在项目中拥有该着色器的副本来使用自定义版本的定向光影,则将不再使用它。相反,选择在你的自定义着色器编辑>项目设置>图形

反射探头在两个纹理之间共享一个采样器。如果你在你的着色器手动取样它们,并得到一个“未声明的标识符samplerunity_SpecCube1”的错误,你需要从修改代码UNITY_PASS_TEXCUBE(unity_SpecCube1)来UNITY_PASS_TEXCUBE_SAMPLER(unity_SpecCube1,unity_SpecCube0)。

UnityEditor.ShaderUtil.ShaderPropertyTexDim已弃用; 使用Texture.dimension。

ComputeBuffers

ComputeBuffers在自动转换的OpenGL着色器中的数据布局已更改为与DirectX ComputeBuffers的布局匹配。如果你在OpenGL中使用ComputeBuffers,删除任何调整数据的代码,以匹配以前的OpenGL特定的布局规则。请参阅计算着色器的详细信息。

可玩性:迁移到5.4

可玩性现在是结构而不是类。

该Playable结构是手柄原生Playable类,而不是指向本地Playable类。

非空的Playable结构并不能保证可玩可用。使用.IsValid方法,以验证您可播放的都可以使用。

这用于返回null空输入任何方法/输出将立即恢复Playable.Null。

Playable.Null 是无效的Playable。

Playable.Null可以传递给AddInput,SetInput并SetInputs预留空输入,或隐式地断开连接的输入。

使用Playable.Null或任何无效可玩作为输入的任何方法,或调用一个无效的可播放的方法将抛出适当的例外的操作。

Playables与比较null是毫无意义的现在。与比较Playable.Null。

Playables必须使用分配Create要使用这个类的静态方法。

Playables必须使用取消分配.Destroy上播放的处理方法。

不解除分配的游戏将泄漏。

Playables转变为结构避免装箱/拆箱(以提高性能拳击更多信息)。

浇铸Playable到一个对象,隐含或明确地,将引起装箱/拆箱,从而降低性能。

继承可Playable类将导致子类的实例的装箱/取消装箱。

由于只有动画可现在,ScriptPlayable■找被取代CustomAnimationPlayables。

不再可能从基本Playables派生。只需在您的自定义Playables中聚合Playables。

Oculus Rift:从Unity 5.3升级您的项目

按照这些说明从Unity 5.3升级您的Oculus VR项目:

重新启用虚拟现实支持。

打开播放器设置。(菜单:编辑>项目设置>播放器

选择其他设置和检查虚拟现实支持复选框。使用复选框下方显示为每个构建目标添加和删除虚拟现实设备的虚拟现实SDK列表。

删除魔环Spatializer

取出魔环Spatializer(:从菜单通过音频设置窗口,您的项目中的音频插件编辑>项目设置>音频),使用Spatializer插件下拉菜单。它可能与本地空间化方法冲突并阻止构建。

重新排序兄弟姐妹

出现了变化,当同级GameObjects在Unity 5.4重新排序时所触发的事件。同级GameObjects是GameObjects所有在层级窗口共享相同的父。在统一之前的版本,不断变化的兄弟GameObjects的顺序将导致每一个兄弟姐妹收到一个OnTransformParentChanged电话。在5.4中,同级的GameObjects不再得到这个调用。相反,家长收到游戏物体到一个单一的呼叫OnTransformChildrenChanged。

这意味着,如果你在你的项目中,依赖于代码OnTransformParentChanged当兄弟姐妹重新排序被调用时,将不再发生这些调用,你需要更新你的代码时,父对象接收到采取行动OnTransformChildrenChanged调用来代替。

这改变了,因为新的行为提高了性能。

在运行时重新排列大的GameObject层次结构

由于变换部件的优化,使用Transform.SetParent或DestroyING包括1000+ GameObjects层次的零部件现在可能需要很长时间。调用SetParent不推荐或以其他方式在运行时重新安排如此大的层次结构。

Windows应用商店

为所有.NET脚本后端SDK更新了生成的Visual Studio项目格式。这解决了当没有在生成的项目已经改变过度重建。您可能需要删除现有生成* .csproj的,尤其是当它与“生成C#项目”选项选中建成,所以团结可以再生的。

脚本序列化错误

有两个新的脚本序列化的错误赶上时统一API从构造函数和字段初始化反序列化(负载)时被调用。反序列化可能发生在不同的线程主线程,因此它是不安全的反序列化期间调用统一的API。有在(脚本序列化)脚本的连载]页的统一手册中的底部的更多细节。

支持视网膜屏幕

编辑器现在支持Mac OS X上的Retina分辨率,具有高分辨率文本,UI和3D视图。

编辑器GUI现在在点空间中而不是像素空间中定义。在标准分辨率显示器上,没有变化,因为每个点是一个像素。然而,在Retina显示器上,每个点是两个像素。目前的屏幕UI规模可作为EditorGUIUtility.pixelsPerPoint。由于Unity可以有多个窗口,每个在不同像素密度的监视器上,该值可能在视图之间变化。

如果编辑器代码使用常规的编辑器/ GUI /布局方法,很有可能您不需要更改任何内容。

如果你正在使用Screen.width/height,改用EditorWindow.position.width/height替代。这是因为屏幕大小以像素为单位,但UI是以点数来定义的。对于在检查中显示自定义编辑,使用EditorGUIUtility.currentViewWidth,它正确地占了滚动条的存在。

如果您在UI中显示其他内容(例如RenderTexture),则可能是以点数计算其大小。要支持Retina分辨率,您需要将点大小转换为像素大小。有在新方法EditorGUIUtility此。

如果您使用的是带有自定义背景GUIStyles,你可以通过把一个纹理用整整翻了一倍尺寸变成了‘GUIStyleState.scaledBackgrounds“阵列添加的背景纹理视网膜版本。

与动力不足的图形硬件Mac电脑可能会由于增加了分辨率3D体验的看法慢得令人无法接受编辑的帧速率。视网膜的支持可以通过选择上Unity.app“获取信息”在Finder,并检查“打开低分辨率”被禁用。

物理学:网格和物理转换漂移

有:

如果拒绝物理学的变化包含无效(非有限)顶点,则变更。

通过不发送冗余转换更新来避免物理变换漂移。

5.3的行为是动画系统始终发送变换更新消息动画曲线这是不变的。这些消息唤醒了刚体和固定这被证明在5.3风险很大。

5.4的行为是,如果没有位置变化,Rigidbody不会醒来(大多数人会期望的)。

如果您的项目依赖于始终唤醒Rigidbody的5.3行为,它可能无法按5.4中的预期工作。

Web播放器

Unity Web Player目标已从Unity 5.4中删除。如果您的项目升级到5.4,您将无法将其部署到Web播放器的平台。

如果您有需要维护的旧版Web Player项目,请不要将其升级到5.4或更高版本。

升级到Unity 5.5

原文地址:https://www.cnblogs.com/kubll/p/10798766.html

时间: 2024-07-31 13:27:32

升级到Unity 5.4的相关文章

升级到Unity 3.5

升级到Unity 3.5 如果您有一个将根节点标记为骨架的FBX文件,则将在3.5中与额外的根节点一起导入该文件,相比之下, Unity 3.5做到这一点是因为当导入动画字符时,最常见的设置是具有一个具有所有骨骼的根节点和在层次结构中它旁边的骨架. 当创建额外的动画时,通常从fbx文件中删除带皮肤的网格.在这种情况下,新的导入方法确保附加的根节点总是存在,因此动画和带皮的网格实际匹配. 如果实例和FBX文件的预制之间的连接已经在3.4中破坏,动画将在3.5中不匹配,因此您的动画可能无法播放. 在

升级到Unity 5.3

升级到Unity 5.3 全球照明 光照贴图快照已重命名为照明数据资产.在升级到Enlighten 3后,照明数据的内部格式已更改.来自以前版本的Unity的快照不再受支持,应重新进行重新编译. 这也影响具有实时GI的流化场景AssetBundles.将不会加载光照贴图数据,因此也应重建此类绑定. 光探测器和环境照明现在在伽马和线性色彩空间中是一致的.与Unity 5.2相比,环境照明的一些差异是可以预期的.输出匹配Unity 4.x强度现在,但从4.x和我们的光投影代码生成L2系数和Enlig

升级到Unity 5.5

升级到Unity 5.5 着色器:基于物理的着色代码更改 基于物理的阴影相关的代码已被重构在Unity 5.5(文件UnityStandardBRDF.cginc等).在大多数情况下,这不直接影响你的着色器代码,除非你直接手动调用一些函数.显着的变化如下所示. 现在有功能,光滑度,粗糙度和感性粗糙度之间的转换: PerceptualRoughnessToRoughness,RoughnessToPerceptualRoughness,SmoothnessToRoughness, Roughnes

【Unity】4.1 创建组件

分类:Unity.C#.VS2015 创建日期:2016-04-05 一.简介 组件(Component)在Unity游戏开发工作中非常重要,可以说是实现一切功能所必需的. 1.游戏对象(Game Object) 游戏对象(Game Object)包括空物体.基本几何体.外部导入的模型.摄像机.GUI.粒子.灯光.树木等各类元素. 凡是出现在层次视图中的元素都是游戏对象. 2.组件(Component) 组件是在游戏对象(Game Object)中的实现某些功能的集合.无论是模型.GUI.灯光还

Unity: Invalid serialized file version xxx Expected version: 5.3.4f1. Actual version: 5.3.5f1.

Unity发布安卓项目,如果直接使用Unity打包APK一切Ok,导出Google项目 使用Idea打包 一进去直接Crash. 报错: 1978-2010/? E/Unity﹕ Invalid serialized file version. File: "/data/app/eran.project.b-1/base.apk/assets/bin/Data/globalgamemanagers". Expected version: 5.3.4f1. Actual version:

较为激进的基础框架

1. 使用 Roslyn 的动态编译修改语法树的方式支持高级语法. 让Unity5/Unity2017等能够支持到C# 7.3语法. 原理 : https://www.cnblogs.com/liuxiaoji/p/9875826.html 下载的网站不见了, 可能随着Unity支持的.Net库升级, 未来Unity也会支持到7的语法, 作者把这个项目关了吧 这个项目非常实用, 并且基本没有BUG, 用的飞起. 2. 使用await代码特性代替协程的方式 : http://www.steveve

unity内部:内存 和 性能(以及Unity5的升级优化)

      我们的脚本代码里经常会需要访问gameObject引用或者某个组件的引用,最好的方式当然是在脚本Awake的时候就把这些可能访问的东西都缓存下来:如果需要访问临时gameObject实例的某属性或者临时某组件的gameObject实例,在能够确保组件一定存在(可以使用[RequireComponent( typeof(AudioSource ))] 如果没有自动添加移除不了!)的情况下,可以用属性访问,毕竟属性访问比GetComponent要快上一倍,但是如果不能确定组件是否存在,甚

升级xcode6和ios8后,unity遇到的一些小问题

升级最新的Xocde6后,如果不是最新版本的unity,虽然也可以也可以正常的build,但如果想通过unity连真机进行profile的话,就会在xocde中报错,这个的主要原因是unity的配置里并没有最新Xcode版本的识别,unity4.5.4升级可以解决这个问题,但如果因为项目需要而无法升级的情况下,就需要自己手动设置来解决了. 操作也很简单,就是UUID在plist之间拷贝的工作.首先,进入Application目录,显示Xcode的包内容,打开/Applications/Xcode

升级MAC OS到10.13, 10.14系统后UNITY工程无法加载资源的解决办法

升级MAC OS到10.13, 10.14系统后,出现UNITY工程无法加载资源的情况: Unity项目中Asset目录显示为空! 解决办法一: 打开Launchpad中的磁盘工具 (也就是实用工具下的"磁盘工具") 新建一分区,名称大小任意,格式为MAC OS 扩展(日志式) 将unity工程移至新分区 OK,工程已经可以正常加载了 解决办法二: 1. 升级Unity版本 (如Unity5.6.6, Unity 2018.1 均可以)   2. 安装相应的补丁版Unity3D 参考链