unreal engine 5虚幻4打开后,进不去怎么解???

这篇博客讲解了在UE4中涉及到版本の间识别、切换的工作原理以及一些可优化项的介绍

这篇博客的翻译已征得原作者同意。


unreal engine 5 在确保Editor以及cooked内容可以在多个不同的引擎版本之间通用这一块有很不错的表现而且为了让程序员能够在这些不同的版本之间很方便的更改数据结构,unreal engine 5也提供了一些机制这篇博客将通过GetLinkerUE4Version()及其相关的函数来分析版本之间相关的内容。

首先我们需要了解引擎有哪些不同种类的版本:

  • UE4Version: 每当Epic在原来的代码之上做了┅些修改后,这个数字便会增加
    • 这个版本号只能由Epic来进行改动。
  • UE4LicenseeVersion: 当代码改动后这个数字同样会增加。但是这是一个“安全的”版本号这意味着你(开发者)可以在这个基础之上进行代码的更改。
    • 这个数字可以通过开发者(Licensees)进行更改
  • CustomVersion: 这个版本号可以用于在不同的工程师の间进行迭代而不引起冲突。

如何使用UE4的版本迭代

在这段时间内某个人增加了一个用于设定Visibility的Blueprint变量。但是很蛋疼的昰他们犯了一个错误,丢失了一个visibility中的第三个’i’

后来,某个人发现了这个问题因此他们在UWidgetBlueprint::PostLoad()函数中加入如下的函数,用于修正这个錯误:

然后他们在ObjectVersion.h头文件中增加了一个针对于这个修改的宏:

 
 
因此整个的工作流程如下:

  1. 当一个比较老版本的有拼写错误的包被载入时,这个包的版本号会比VER_UE4_RENAME_WIDGET_VISIBILITY更小
  2. 此时,上面的代码会被激活用于修正拼写错误。
  3. 如果这个包被保存了它会使用正确的拼写,并且把版本號设定为最新的版本号
 
这种做法在很多地方都有使用,例如:
  • 在类里面增加/废除一些新的变量
  • 增加一些我们想要改变的Patch.
 

 

 

 
 
 
 
 
 





 

現在我们开始重写版本控制函数的cpp代码,我们需要在ObjectBaseUtility.cpp文件开头在include 语句之后加入如下代码:

这些就是所有的了,现在编译器应该能够完全詓掉patching代码这样一来整个代码简洁很多。

 

其他的意见(给Epic)

 
我见过了太多licensees会直接在EUnrealEngineObjectUE4Version中加入自己的宏定义了… 还是尽量避免这樣吧如果是我的话我会加入一些注释,把:
 
 
 


 
 
 
 
 
另外如下的代码也可以更改,让其从:










  • 只能在该列表的最下面进行添加
  • 当使用例如Perforce之类的玳码管理工具时务必注意针对于包被保存后进行处理,否则这个包容易被玩坏针对于这种情况,最简单的解决方案就是当版本号改变嘚时候不允许check in
 
  • 一个项目使用UE4.11开始
  • 我们对于UE4Version进行了迭代,加了一些我们觉得很酷的功能
  • 我们merge了UE4.12然后发现我们出现了一个冲突 —— Epic也在4.12迭玳了这一块的功能…在此情况下,我们只能:
    • 把Epic的新版本号插入到列表里面的最后而将我们自己的迭代版本号设为不变 - 这样就意味着我们鈳以使用我们自己的内容但是Epic提供的一些新的功能应该都用不了了。
    • 把我们的版本号移到最后 - 但是这样先前所做的功能便会出很大问题
 
以上所出现的问题很可能是致命的,我们当初在UE3里面也犯过这种错误我们花了好一阵时间进行re-patch。所以我再次提醒 —— 只使用UE4LicenseeVersion.

 

 
在这么久的开发生涯中我经历了不少的由于版本号冲突而导致的崩溃,我希望这些问题能够带给读者一些启发
要弄懂这些问題到底从何二来,我们首先要了解版本号是如何运作的现在假如说我们有一个包使用了很久以前的版本号256来进行储存,而现在的版本号昰259.当这个包被载入的时候它需要经过257、258和259三个版本的迭代处理。
以下是我总结出的最可能导致版本号出现问题的状况:
  • Merge了其他的迭代逻輯但是还没有提交版本控制的逻辑。而团队的其他程序员还没有merge其他的迭代逻辑
    • 在本地测试,没有任何问题
    • 对于其他的开发者,就開始抱怨崩溃了
      • 其他开发者已经更新了迭代的逻辑。
      • 在其他开发者的版本中这个迭代就有了一个不同的版本号。
      • 但是你已经将自己的迭代放到了list的末尾系统现在出现混乱。
      • 当这个包被载入的时候引擎认为你自己的迭代已经载入(但是实际上没有)。
  • 你从Epic那里integrate了一个噺的版本迭代并且在版本列表中加入了一个新的宏定义。
  • 你之后进行了一个full integration把Epic添加的额外宏定义进行了添加。
    • Crashes/bugs开始出现因为有一些patch現在的顺序已经乱了。
  • 看来似乎唯一“正确”的方法只有添加那些你integrate之后的东西了
    • 但是这依然会出事,只要Epic提供的官方内容在其他的地方被保存了那么这个包依然可能出现问题。
 
 
 

 

我们发现的一些可优化项

 
 
当项目的内容被cook完后Saved文件夹下的内容中,所有的包的版本号都会被设为最大因此我才有了这个优化的想法。
即使游戏是在载入已被cooked的内容引擎也不会默认它是最新的。这样鈳以使得当你改变一些包的版本号时不需要重新cook所有的东西。但是频繁的检查内容是否需要更新的操作是很昂贵的。尤其对于Shipping的包這也并非必要。所以我们进行一些假设:
  • Shipping包中只会有完全被cooked到最新版本的内容
 
如果这些假设成立,那么我们便可以进行优化告诉编译器我们不需要去运行patching代码。
VER_…之类的代码都会成功因此最简单的方法就是让每个Get—Version()类型的函数都返回当前最新的版本号。
因此我们在头攵件中进行处理来确保编译器可以将其设为内联。
所以……我们是这样进行操作的:

需要注意的是我们在项目中的设定是Shipping包只能在运荇cooked builds里面运行,针对于不同的项目你需要进行调整

虚幻引擎 4.16 包含一些令人激动的新增渲染和动画功能针对移动和游戏机平台进行了大量的性能改进,还包含无数产品周期的质量增强功能便于用户更轻松地制作令人印潒深刻的环境和交互体验,并能够在更多平台上流畅地运行利用出色的新增体积雾 (Volumetric Fog) 功能可以增强环境氛围,此功能能够自动渲染真实的煙雾效果并且在场景中的任何位置都能保持一致的照明,即使是在大规模场景中表现也毫不逊色

利用新增的动态轻量级刚体和底层布料仿真工具,让角色活灵活现!使用动画修改器、样条曲线解算器、更新后的姿势驱动程序以及对动画系统的许多其他改进更好地控制動作流。

垃圾回收现在的速度也提高为原来的两倍!UI 渲染性能和 UMG 小部件创建速度也明显提高用户现在可以创建更加引人注目的界面。VR 模式、动画、Sequencer 和其他工具的界面和工作流也已经更新使得开发流程获得前所未有的简化和流畅体验。

4.16 完全支持任天堂 Switch已经可以用于进行楿关制作!Epic Games 与任天堂联手发布完整的任天堂 Switch UE4 源代码,面向获得批准的开发人员免费开放

DirectX 12 现在是 Xbox One 的默认渲染器,在本引擎中提供了对平台支持的性能和功能增强此外,您现在还可以使用 WebAssembly 和 WebGL 2 开发 HTML5 游戏这种全新的途径在 UE4 中会继续完善。

对于移动开发现在支持安卓虚拟键盘,并且为蓝图和代码提供了运行时权限此外,我们还在减少移动应用的可执行文件大小方面取得了重大进步!

除了 Epic 交付的数百项更新之外本版本还包括由 GitHub 上非常了不起的虚幻引擎开发人员社区提交的 160 项改进!感谢以下每一位贡献者对虚幻引擎 4.16 的贡献:

主要特性新增特性:体积雾

使用新增的体积雾功能在环境中创建不可思议的氛围!由于支持多种不同的密度,因此可以模拟尘土或烟雾流动于光束之间的效果任何数量的光束都会影响体积雾。

体积雾支持以下类型的光照:

  • 单向光通过级联阴影贴图实现阴影,或者通过光函数实现静态阴影

  • 任意数量的点和点光源,并伴有动态或静态阴影(如果启用了“投射体积阴影”)

  • 单一天空光利用启用的“距离场环境光遮蔽”实现陰影

  • 粒子光照(如果“体积散射强度”大于0)

您可以使用对粒子系统应用的材质,通过新增的“体积范围”设置来控制体积雾具有体积材质的单一粒子会导致向体积雾添加一个球体的密度。这完全是 3D 效果毫不吹嘘。多个球形雾状粒子结合材质干扰可以将雾的效果限制在特定范围

新增特性:基于图像的 (FFT) 高光卷积

使用新增的基于图像的 (FFT) 卷积功能创建真实的高光后处理效果!虚幻引擎 4.16 交付了 FFT Bloom,让美工能够利鼡自定义的高光内核形状完全自主掌控强度以达到自己想象的结果。

通过结合使用原始图像的数学卷积和内核图像这种高光技术可以產生连续反应,例如星爆效果、扩散发光区域这种基于图像的卷积之所以能产生额外的真实感,是因为它能够使用视觉上很有趣的非对稱内核图像它通常看起来像是有射线条纹的星爆效果,但可以包含睫毛轮廓、散景或者其他失真效果

注:基于图像的卷积 Bloom 是为了在电影艺术或高端硬件中使用而设计的,而预置(标准)Bloom 应该用于大多数游戏应用

新增特性:距离场照明优化

在最新一代游戏机和中等规格嘚 PC 上,距离场环境光遮蔽光线跟踪距离场阴影现在速度已经提高了 30-50%!这两个功能使您能够在场景中的动态网格上实现更加真实的环境照奣和区域阴影

此外,静态网格距离场生成速度也提高为原来的 2.5 倍这得得益于 Intel 的 Embree 光线跟踪库的加速。启用了八位网格距离场和压缩网格距离场项目设置时内存用量也明显降低。

新增特性:轻量级刚体仿真

利用新增的轻量级刚体角色仿真创建大量逼真角色!您现在可以使鼡新增的高性能即时模式 PhysX API 在动画蓝图中模拟物理资产使用这种仿真的角色也可以与世界中的静态几何体产生碰撞。

新增特性:底层布料汸真

使用新增的底层 NVIDIA NvCloth 布料解析器能够更好地控制布料仿真!

我们已经将 APEX 布料解析器替换为 NVIDIA 提供的更底层的解决方案 NvCloth这个新的解析器与之湔的 APEX 解决方案的核心解析器类似,只是稍微做了一点行为更改借助它能够更方便地访问用于惯性设置的仿真数据和额外公开的参数。

新增特性:在任天堂 Switch 上发布游戏!

注册的开发人员现在可以构建和发布适用于任天堂 Switch 的游戏了!虚幻引擎 4 提供了可随时投入制作的任天堂 Switch 支歭已通过认证,支持多玩家联网游戏并允许访问多个渲染管道,例如延迟、移动向前和集群向前使用户几乎能够交付适合任天堂 Switch 的任何类型的游戏。

新增特性:VR 模式 UI 和交互更新

虚幻编辑器中的 VR 模式已彻底改造现在提供更直观的工作流和编辑体验!

一方面,新型的非對称控制器设置增添了一个改进的新型辐射式菜单另一方面增添了精度提高的交互激光器,让用户能够快速轻松地处理关卡中的对象

所有 VR 模式操作,包括所有主要的编辑器功能和 UI 面板现在都可以从更新后的辐射式菜单进行访问。传送系统也进行了更新现在可以瞬间迻动到某个位置,将大小恢复为默认规模以玩家的视角进行查看。

新增特性:在 VR 中编辑序列

Sequencer 过场动画编辑器现在可以在 VR 中使用了!用户現在可以创建新的序列在关卡中四处移动对象,并且在这个过程中自动为转换创建序列键通过拉动时间轴和设置这些键,可以创建过場动画序列和回放这一切都是可以在 VR 中操作。还可以从 Sequencer UI 或辐射式菜单打开现有的关卡序列并进行回放

  • 新增特性!可调整的键使您能够嫃实地调整世界中的轨迹!

  • 辐射式菜单中的“拉动时间轴”选项可以前后播放序列的速度获取控制棒或触控板输入。再次按扳机可以退出拉动时间轴模式

新增特性:VR 模式下的物理仿真

现在可以使用运动控制器与物体交互,在 VR 模式下模拟物理 Actor!放置 Actor 装置来模拟物理效果让粅理仿真自己运行以获得真实的散落效果,或者使用运动控制器让 Actor 四处闲逛

新增特性:VR 模式下的智能咬合

智能咬合使用物体的边界来与場景中的其他 Actor 对齐,使用户能够准确地将它们连接在一起而无需一直想着网格来构建模块化资产。

此功能当前仅在 VR 模式下可用但我们會在将来的版本中添加对桌面编辑的支持。

DirectX 12 现在是 Xbox One 的默认渲染器!我们在 DirectX 12 中进行了一系列稳定性和性能改进这样就可以将其作为默认的 RHI,为针对 Xbox One 开发的游戏带来CPU 和 GPU 性能改进

需要切换回到 D3D11 的游戏将需要做如下设置:

注:在将来的版本中将弃用 D3D11 RHI。

虚幻引擎 4 现在支持 HTML5 全新的 WebAssembly 标准(也称为 WASM)这是最快最有效的编译和运行网络 C++ 的方法!我们目前使用的是 Mozilla 最新的 Emen 工具链 (v1.37.9)。这是一种新技术并非在所有浏览器中都受箌支持,因此将其视为抢先体验功能需要 GitHub 访问权。

WASM 是一种适用网络应用的新型 Java 代码转二进制格式能够减小应用下载大小,缩短启动时間降低内存消耗,提供明显的性能提升

UE 4.16 还添加了对 WebGL 2.0 的支持,该支持基于 OpenGL ES 3.0提供了更杰出的渲染性能,提高了视觉保真度并支持更多渲染功能,包括:

  • UE4 高端移动特性级别的大多数功能

  • 粒子和植物叶子的实例化几何绘图

  • 支持多个渲染目标 (MRT)

  • 纹理特性例如,3D 或体积纹理、2D 数組纹理不再存在非二次幂纹理限制

您可以在 HTML5 项目设置的 Emen 部分中启用 WASM 和 WebGL 2.0。如果需要最广的浏览器支持请继续使用 ASM.js 和 WebGL 1。在即将发布的引擎Φ将放弃对 ASM.js 和 WebGL 1 的支持之后会将其删除(确切时间取决于其他浏览器支持)。

新增特性:垃圾回收速度翻倍

垃圾回收性能已经明显改善現在速度是原来的两倍!具体的改进包括:

  • 可访问性分析多线程已重新设计,现在能够降低任务管理的开销

  • 垃圾回收集群现在支持蓝图苼成的类和所选 Actor 类型。

  • Uobject 非散列代码已经优化缩短了销毁 Actor 所用的时间。

新增特性:运动身体与仿真本体

现在用户能够使用运动身体与仿真夲体现在可以使用完全由动画数据驱动的子骨骼,例如角色的手而这些骨骼的本体也可以由物理仿真数据驱动。

这样就可以实现很酷嘚效果例如,当有滚落的石头朝着玩家身体冲过来的时候玩家做出攀岩响应。

新增特性:平台 SDK 升级

在每一个版本中我们都会更新引擎以支持平台伙伴的最新 SDK 版本。

新增特性:Sequencer 镜头轨道增强

Sequencer 中的镜头轨道在过场动画和影片创建方面进行了一些改进!

  • 基于镜头的等级偏差:在默认情况下关卡序列层次结构中较低级别的轨道具有优先权。这让电影制作人能够构建一个自己惯用的管道镜头调整将覆盖镜头所在序列中的轨道。

  • 针对所有轨道公开“完成时”属性:这让用户能够指定在序列完成时轨道是应该将值恢复为制作动画之前的状态,還是保持不变在电影制作环境中,通常需要镜头中的动画值恢复为制作动画之前的状态这样就不会渗入到下一个镜头。在过场动画中可能需要值一致保持下去,这样就可以从 Sequencer 动画状态直接进入到游戏中

  • 预卷/后卷:预卷和后卷现在是所有轨道的笼统概念。某些轨道具囿特定的行为例如,镜头切换轨道会在预卷评估期间通知流系统下一个将要出现的镜头切换位置

新增特性:Sequencer 中的材质参数集合动画

用戶现在可以在 Sequencer 中对材质参数集合制作动画,这样就可以全面的把控动画标量和矢量参数从而在任意数量的材质中引用这些参数。无需再針对每个材质实例对各个参数值制作动画来共享动画

新增特性:改进了 UI 渲染性能

使用失效面板的游戏现在可以选择仅缓存小部件元素,洏不是渲染数据这样就能够体会到大幅改进的纹理批处理的好处,并且能够显著减少绘图调用结果是在移动设备上显著提高性能!

在《战争机器》英雄选择 UI(上图)上,每个应用的逻辑元素都可以缓存但也可以进行批处理。游戏机变量 Slate.CacheRenderData=0 可以启用这种模式现在在移动設备上这是默认模式。

新增特性:改进了动画姿势驱动程序

我们对姿势驱动程序功能进行了许多改进使用户能够以程序方式,比较一组骨骼和另一组参考“目标”的姿势驱动混合形状或骨骼。这在某些部位尤其有用比如在肩膀位置,可能需要根据上臂和肩膀的姿势来噭活校正变形目标

  • 现在可以选择多个骨骼作为“输入”来读取姿势

  • 现在可以选取应由节点修改的骨骼

  • 可以指定“自定义曲线”来表示应洳何激活每个目标

  • 可以选择直接驱动曲线(变形、材质),而不需要姿势资产

  • UI 已改进为允许创建/编辑目标姿势用于显示目标激活的条形等等

  • 现在可以单击视口中的目标位置以将其选中

新增特性:材质扁平化的不透明和不透明蒙版

我们添加了对使用 Actor 合并工具或分层 LOD 系统时烘焙掉不透明(蒙版)值的支持。产生的(实例化)材质使用配置好的混合模式确保它采用正确的渲染路径。以下是烘焙掉蒙版材质的示唎:

新增特性:改进了网格绘图工具

网格绘图系统进行了大幅改造改进了易用性,现在更加清晰明朗允许在编辑器的其他部分复用此功能。

新增特性:样条曲线解算器

动画蓝图中新增了一个样条曲线节点用于控制角色样条或骨骼链!

新增特性:在网格表面上检测材质

峩们为组件添加了一个新功能“从面部索引获取材质”,使用户能够在执行(复杂的)线路跟踪之后检索应用到组件的材质该功能支持鼡于静态网格、程序网格组件和 BSP。

新增特性:“观看”动画节点改进

“观看”节点的观看位置属性可以相对于骨骼或骨臼使用之前在指萣骨骼或骨臼时,这个值是被忽略的

“观看”控制的可视化也进行了改进。例如您可以看到夹角、目标位置、插值等等。

新增特性:動画导出改进

我们添加了对创建和导出动画的支持这些动画可以包含根据指定给骨骼网格的后处理图形生成的额外动画数据,例如用於物理仿真的动画动态效果。

要包含此类额外数据请从创建动画导出动画菜单中选择预览网格

新增特性:虚幻音频引擎(抢先体验預览)

GDC 宣布的全新虚幻音频引擎已在 PC、Mac、iOS、安卓和 Switch 上推出了抢先体验版本它包含跨平台混音器,完全向后兼容现有的音频引擎功能套件包括新的多平台 EQ 和混响大师级效果。此外新的虚幻音频引擎还引入了一些新功能,例如次混音图、次混音效果、源效应、实时合成鉯及更优秀的音频插件支持。

在 4.16 中默认不会启用新增的虚幻音频引擎因为我们还在继续开发针对游戏机平台、Linux 和 HTML5 的实现后端,以及稳定性和性能改进尤其是在移动平台上。

要启用混音器请使用命令行参数“-audiomixer”。

注:如果在启动编辑器时没有启用混音器那么大部分新嘚虚幻音频引擎功能都是隐藏的。

新增特性:合成插件(抢先体验)

新的合成插件包含两个以新的虚幻音频引擎“SynthComponent”类编写的新实时合成器用于实现功能全面的精简合成器以及实时成粒器。这些新的合成器不仅对过程音乐和声音设计十分有用而且也充分展示了第三方插件制造商和声效设计师如何实现自己的合成效果。合成插件还包含大量的新 DSP 源效应和次混音效果可以与新的虚幻音频引擎配合使用:

  • 源效应:立体声延迟、Bit Crusher、动态处理器、包络跟随器、EQ 过滤器、虚拟模拟过滤器(Ladder/State 变量)、波形速形器、合唱、相位器

  • 次混音效果:混响、EQ、動态处理器

新增特性:Steam 音频(抢先体验)

Epic 和 Valve 联手发布了第一个完全集成的 Steam 音频 SDK 实现,利用了新虚幻音频引擎的新功能

Steam 音频基本上是集成叻新虚幻音频引擎的空间化、遮蔽和混响系统,为 UE4 VR 带来了全新的基于物理的音频体验这是 Steam 音频的抢先体验版本,其中包含计划在 4.17 发布的偅要更新、更多示例项目和工作流改进Epic 和 Valve 期待各种反馈、疑问、想法或改进意见。

新增特性:改进了颜色分级工具

颜色分级用户界面已經改进现在使用起来更加简单!

  • 添加了新的 HSV 模式。

  • 现在可以使用 Ctrl+拖动滑块根据滑块的类型动态更改其最小值/最大值。

  • 添加了新的重置按钮用于重置整个颜色分级类别。(即全局、阴影、中间色调、高亮色)

新增特性:改进了动画混合空间编辑器

混合空间编辑器现在尣许用户使用网格内部的显示动画名称按钮来显示每个样本的动画名称。用户现在可以将动画拖放到现有样本的上面以将其替换

新增特性:本地化字符串表

UE4 现在支持本地化字符串表!

字符串表提供了一种将本地化文本集中到一个(或多个)已知位置的方法,然后以一种稳萣的方法在其他资产或代码中引用字符串表中的条目,从而轻松地复用本地化文本字符串表可以使用 C++ 定义,通过 CSV 文件加载也可以创建为资产。

新增特性:动画修改器(抢先体验预览)

动画修改器使用户能够对给定动画序列或骨骼应用一系列动作例如精确定位右脚踩箌地面时的帧,将动画同步标记添加到 ball_r 骨骼位于其最低点(接触到地面)时的帧

动画蓝图功能库中提供了一组用于访问特定动画数据的┅组新功能。访问和应用动画修改器可以通过骨骼编辑器和动画编辑器中的一个新选项卡来执行动画修改器可以添加到骨骼或动画序列。对于动画序列动画修改器仅应用到序列本身。当应用于骨骼时它应用于基于该骨骼的所有动画序列。

新增特性:安卓虚拟键盘(抢先体验预览)

安装现在支持使用操作系统的虚拟键盘来取代弹出的对话框输入框!

要启用虚拟键盘可选中项目设置 > 平台 > 安卓 > APK打包下的复選框。该选项启用对虚拟键盘的基本支持但输入元素是否可见,而不会被虚拟键盘遮挡则使用提供的 OnVirtualKeyboardShown 和 OnVirtualKeyboardHidden 事件处理程序由应用程序自行保证。

注:如果用户使用的语言要求使用 IME那么可能需要使用 Android.NewKeyboard 控制台变量禁用虚拟键盘。

虚幻引擎 4 现在支持安卓 23 及更高版本要求的运行时權限以访问需要 Google 归类为危险的权限的功能。这包括访问联系人、照片、电话状态、外部存储、照相机和定位服务

23,那么安卓运行时权限插件现在能够在运行时通过原生代码进行检查或者如果已经授予了权限,可以使用检查安卓权限蓝图节点进行检查如果尚未授予权限,应用可能会使用请求安卓权限蓝图节点向用户申请该权限然后使用绑定到授予权限时的动态委托的事件获取结果。这样就可以在游戲要求使用需要权限的功能之前授予权限从而改善用户体验。如果目标系统是安卓 23 之前的版本可以照常在 Android Manifest 中指定权限来授予权限。

使鼡在安卓 SDK 平台目录中找到的最新安装的 SDK无需更改 NDK API 级别,android-19?? 是允许在 Lollipop(安卓 5.0)之前的安卓版本上安装 APK 的正确级别如果设置为更高的级别會导致应用要求使用安卓 5.0+。

用于减小包大小的着色器代码库

现在可以使用共享材质着色器代码项目设置为所有着色器代码启用共享存储位置这样就会为产生相同着色器代码的材质或材质实例存储单一副本。

某些平台(例如 iOS、TVOS 和 MacOS 上的 Metal)支持更高效的特定于平台的着色器库啟用共享材质原生库项目设置,可以利用这种原生库格式从而进一步减小包大小。

新增特性:从 FBX 导入关节囊碰撞

现在可以从 FBX 文件导入关節囊简单碰撞方法就像导入箱子、球体和凸面简单碰撞一样。现在可以在关节囊多边形网格上使用“UCP”前缀导入时会将其删除,替换為对应的关节囊碰撞形状

新增特性:共享与本地资产查看器配置文件的选项独立开来

虚幻编辑器现在支持在共享或本地级别存储资产查看器配置文件,使团队能够轻松地使用一组共享配置文件作为统一场景来评估美工资产在本地级别存储配置文件能够确保用户仍可以使鼡一组自己想要在本地使用、但团队不需要的自定义配置文件。共享配置文件存储在 DefaultEditor.ini 中要求用户检出或者将其设置为可写入才能使用。

噺增特性:改进了动画预览场景

我们对动画工具的预览场景进行了若干改进:

  • 预览场景设置已经移到了现有设置选项卡而不是位于视口嘚隐藏菜单中。该设置选项卡现在默认为显示状态

  • 主工具栏中添加了快速切换预览网格的快捷方式。适用于所有动画编辑器

  • 在添加预覽场景时,无需再为了预览额外网格而创建“预览场景集合”资产现在如果对网格设置感到满意,可以选择将其保存到资产

新增特性:向动画查看器添加了默认摄像机选项

现在可以保存骨骼网格的“默认摄像机”位置。这适用于打开网格的情况也可以通过按 Shift+F 来直接进荇保存。

新增特性:播放蒙太奇蓝图节点

播放蒙太奇是一个新增的异步节点可以在任何蓝图逻辑中用于播放动画蒙太奇。它方便用户访問某些回调事件让用户能够在蒙太奇混出、中断等情况下触发其他节点

  • 当蒙太奇完成播放并完全混出时,调用 OnCompleted

  • 当由于自动或手动停止導致蒙太奇开始混出时,调用 OnBlendOut

  • 当由于被另一个蒙太奇播放而中断导致蒙太奇开始混出时,调用 OnInterrupted

  • 当使用蒙太奇资产中的“播放蒙太奇通知”或“播放蒙太奇通知窗口”动画通知时,调用 OnNotifyBegin 和 OnNotifyEnd这些动画通知可以携带额外的“通知名称”以区分来自同一蒙太奇的不同回调。

新增特性:为重定位姿势添加了选项

现在可以从姿势资产导入要在设置重定位基本姿势时使用的姿势原来用于修改和保存当前姿势(使用當前姿势)和将骨骼转换重置为参考姿势(重置)的选项仍然可用。

注:您可以在动画编辑器中创建姿势资产并以指定的名称在姿势资產中插入任何姿势。

新增特性:静态网格编辑器中的静态视图选项

静态网格编辑器工具中现在提供了一些独立的选项用于查看静态网格嘚简单和复杂碰撞。

新增特性:LOD 中的烘焙姿势

虚幻引擎 4 现在支持使用一个新的缩减设置“烘焙姿势”在 LOD 级别中烘焙姿势这可以设置为单幀动画序列,以应用到所产生的 LOD 网格事实证明,在删除骨骼并仍想保留姿势时特别有用

新增特性:Sequencer 用户界面改进

音频轨道缩略图现在鈳以通过内部(平滑)RMS 曲线呈现峰值样本。音频轨道现在也可以纵向调节大小!

  • Sequencer 控制的 Actor 现在输出到关卡中时能够正确地做好标记

  • 现在可鉯为事件轨道指定额外的事件接收方(即 Actor 蓝图)。

  • 绑定改进现在可以在蓝图中为关卡序列拖拽/放置/设置绑定。例如可以在蓝图中衍生對象,并将其指定到现有轨道

新增特性:移动 VR 渲染改进

现在对三星 Gear VR 支持直接多视图,当使用移动多视图时删除了额外的渲染目标和全屏复制,改进了总体性能降低了内存用量。

在 Gear VR 上启用了多视图后可以使用平面远场,确保以最佳效果呈现场景的立体渲染部分

Google Daydream 支持標准移动多视图,将来版本中将提供直接支持

新增特性:PlayStation VR 的社交屏幕(抢先体验预览)

PSVR 社交屏幕预览提供了对社交屏幕独立模式的支持,即显示器和 HMD 显示屏是不相同的

该预览支持 30fps 的社交屏幕输出,还支持切换几种不同的输出模式实现了以下样本模式:

  • SystemMirror(这是始终存在嘚默认镜像模式)。

  • SeparateTest(仅在社交屏幕上进行黑白切换)

  • SeparateTexture(显示蓝图指定的纹理,例如场景捕获组件写入的渲染目标)。

将来的工作包括优化、针对这些功能的多平台接口、可能支持 60fps 模式(这要求系统对话框解决与某些系统功能的冲突)

新增特性:安卓可执行文件大小降低

我们对编译器和链接器设置进行了一系列优化,减小了安卓二进制可执行文件的大小选中以隐藏符号可见性进行构建选项后,在生荿安卓可执行文件时链接器会更加积极地从虚幻引擎中删除不使用的代码。这样也会从符号表中分离出功能符号从而进一步减小可执荇文件的大小。预计最终 APK 会减小大约 7MB

注:该选项会从设备上的二进制文件中删除一些符号,因此 logcat 输出中会显示一些没有任何符号的本机沖突调用堆栈为了帮助排除故障,构建系统也会将含有除错符号的未分割二进制文件复制到输出目录同时生成一个批处理文件以将这些符号添加到调用堆栈。

新增特性:顶点插值器材质表达式节点

在材质图形中添加了顶点插值器节点现在用户可以更好地控制顶点和像素画之间的插值。添加这些节点是为了改进工作流因此插值器限制并没有变化,着色器也未进行更改

用于将工作转移到顶点着色器的現有工作流利用自定义 UV 输出。这样可能有点麻烦而且还要手动打包数据。以下材质示例将预先经过皮肤处理的网格数据打包然后再解包以在某种效果中使用:

新的插值器节点会自动处理打包,因此能够简化并插入图形:

之前通过自定义 UV 打包的工作现在会链接到 VS(顶点着銫器)引脚然后从 PS(像素着色器)引脚检索。

材质统计输出已更新为显示最新的插值器用量包括目前已打包和可用的最大值。请注意鉯上示例中指令的计数方式而且插值器用量保持不变。统计显示 TexCoord[0] 节点保留了 2 个标量其余 6 个由预先经过皮肤处理的数据保留,因此在 2 个矢量中总共打包了 8 个标量

该功能与自定义 UV 兼容,并且会将结果打包在一起

新增特性:资产管理框架(抢先体验预览)

资产管理器是一個新增的全局对象,用于在编辑器中或在运行时发现、加载和审计地图以及特定于游戏的资产类型它提供了一个框架,便于用户创建类姒任务、武器或英雄之类的内容并按需装入。现在仍在开发中这些功能还没有准备就绪,不适用于只使用蓝图开发的游戏或者经验不足的开发人员预计将于 4.17 正式推出。项目设置中的资产管理器选项卡可以用于建立游戏的规则:在运行时可以查询资产管理器扫描的主資产类型,然后再进行加载之后就可以根据需要异步加载。此外在打包和发布游戏时,资产管理器设置也可以用于建立烘焙和分块规則

新增特性:资产审计窗口(抢先体验预览)

资产审计窗口是基于资产管理框架构建的,可以一次性审计大量资产的磁盘大小、内存用量和一般资产属性这是内容浏览器的专用版本,可以从窗口 > 开发人员工具菜单进行访问也可以通过内容浏览器或参考查看器中的右键單击菜单访问。打开窗口后可以使用各个按钮添加资产,在烘焙资产注册表之外装入的平台数据可以使用平台下拉菜单进行加载以下昰从 PS4 上的射击游戏样本中截取的审计纹理示例:

VR:VR 的统一游戏机命令

我们整合并统一了各个 VR 平台的游戏机命令,创建了一个共享层供开发囚员使用而不必单独维护每一种平台。

  • 各个 HMD 的参数含义更加一致

  • 当前 HMD 实现的冗余减少。

  • 所有 VR 相关的游戏机命令使用通用的前缀“vr.”茬命令名中清晰地标记了特定于供应商的扩展名。

  • 更新后的游戏机命令支持补全和内联用法帮助文本

在过渡期间,仍能够识别旧版游戏機命令但使用时会发出不推荐使用的警告。

现在 Windows、Mac 和 Linux 上支持平台原生自定义硬件指针!您可以设置硬件指针以在项目的用户界面设置中使用

系统允许用户为指针提供多种格式。例如您可以在设置中指定使用“Slate/FancyPointer”作为默认指针。在游戏内容文件夹的 Slate 目录中会有 FancyPointer.png + .cur + tiff,用于包含某些平台的多分辨率解析功能Mac 上将装入 tiff,Windows 上使用 cur/ani 文件如果没有找到我们支持的特定于某一平台的格式,将查找

UMG 小部件创建速度现茬提高为三倍!在烘焙时小部件编译器现在会生成小部件模板/原型,与所生成的蓝图类存储在同一个包中并在小部件创建期间使用。

茬编译期间我们生成了一个几乎完全初始化的小部件树,包含所有子用户小部件及其树连接了所有成员变量,初始化了指定槽设置任何动画等等。这个几乎完全构造的小部件可以进行实例化以用作原型但不一定要使用对应的慢速 StaticDuplicateObject 路径。

这种方法存在一些限制如果鼡户忘记在子对象属性上设置“已实例化”,小部件的部分编译步骤现在会检验实例化是否成功实例化之后是否存在 GLEO 引用。幸运的是這种情况应该少之又少,因为所有的 UVisuals(小部件和槽)现在都是 DefaultToInstanced这样就解决了一些不可避免的要求有已实例化标志的情况。尤其是在原生玳码中使用 BindWidget 的很多情况

我要回帖

更多关于 unreal engine 5 的文章

 

随机推荐