裁剪

概述了UMG界面设计器中的裁剪属性。

Windows
MacOS
Linux
本页面的内容

在虚幻引擎4.17中,我们对裁剪系统进行了全面修改,在某些情况下可能会破坏向后兼容性。有关这些更改的更多信息,请参阅此处的 Slate裁剪系统 细节。

UMG中的裁剪系统使用 Slate 裁剪系统 作为框架来控制为控件(或编辑器的其他部分) 显示文本、图像或内容的方式。裁剪 的工作原理是使用边界框将渲染对象(图形和文本)限制在某个区域中,以使超出边界框的任何内容都不显示。裁剪系统现在为轴对齐裁剪, 这意味着它可以裁剪任何旋转,在这之前,由于变形处理方式的缘故,这是不可能的。

ClippingExamples.png

在本示例中,每个按钮都是显示的文本的父项。这些示例将展示是由按钮还是文本控制裁剪。

  • 左图 - 按钮或文本上都未启用裁剪。

  • 中图 - 文本上启用裁剪。

  • 右图 - 按钮上启用裁剪。

画布(Canvas) 面板(又称裁剪区)的轮廓为蓝色,代表游戏屏幕,它将会裁剪(即不绘制)游戏超出该区域的任何内容。

UMGDesigner.png

在UMG设计器图形中,“画布(Canvas)面板”(蓝色)代表游戏屏幕的裁剪区。

在虚幻引擎4.16及更早版本中,控件的裁剪是使用布局空间处理的,它将阻止超出“画布(Canvas)”面板的内容渲染。因此,如果控件边界框的某部分 位于“画布(Canvas)”面板外面,它将不会被渲染,就算旋转了控件,控件边界框也不会使部分图像或文本被裁剪掉,即使它位于 “画布(Canvas)”面板中也不例外。

下面的示例展示了更改前后的对比:

Clipping1.png

渲染变形裁剪 | 在4.16及更低版本中。

渲染变形裁剪 | 在4.17及更高版本中。

图像控件(左侧)被放置在“画布(Canvas)”面板的边缘处,因此其部分边界框位于“画布(Canvas)”面板的外面。裁剪系统现在为轴对齐裁剪(而非使用布局空间), 如对比(右侧)中所示,这种裁剪可以消除瑕疵和问题。

裁剪属性

可以在UMG 细节(Details) 面板的 裁剪(Clipping) 部分下更改基于所选的控件处理裁剪的方式。

ClippingProperties.png

属性

说明

继承(Inherit)

该控件不裁剪子项,并且将遵循从父控件传入的任何裁剪/剔除。

裁剪至边界(Clip to Bounds)

该控件裁剪控件边界外的内容。它将边界与先前的裁剪区域相交。

裁剪至边界 - 不相交(Clip to Bounds - Without Intersecting)

该控件裁剪其边界外的内容。它不与任何现有裁剪几何体相交,它推送新的裁剪状态。因此它事实上可渲染层级边界外未裁剪的内容。

该属性不允许你忽略设置为 裁剪至边界 - 始终(Clip to Bounds - Always) 的裁剪区

裁剪至边界 - 始终(Clip to Bounds - Always)

该控件裁剪其边界外的内容。它将边界与先前的裁剪区域相交。

无法忽略该裁剪区域,它将始终裁剪子项。对于UI中的硬障碍(决不希望动画或其他效果干扰的区域),这非常有用。

按需(On Demand)

当所需的大小比分配给控件的几何体大时,该控件裁剪其边界外的内容。当出现这种情况时,它的作用与 裁剪至边界(Clip to Bounds) 相同。

该模式主要是为 文本 添加的,文本通常放置在容器中,而容器大小最终调整后无法支持文本的长度。因此,添加该模式之后,不需要为每个可以包含文本的容器添加[YES]标记(这将导致几乎无法进行批处理),而是可以按照需要动态调整裁剪。只将部分裁剪方式设置为 按需(On Demand) 的原因是,并非每个面板返回的所需大小都与它计划渲染的大小匹配。

其他注意事项

  • 在大部分情况下,都无需调整裁剪方法,除非你因无法控制文本的长度而需要裁剪它。例如,滚动框和可编辑文本控件就符合这种情况,它们被设置为 裁剪至边界(Clip to Bounds) 而非“继承(Inherit)”。

  • 不同裁剪空间中的元素无法一起进行批处理,因此裁剪会带来性能成本。因此,除非面板真的需要阻止内容在其边界之外显示,否则请勿启用裁剪。

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见