裁剪

概述了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)"。

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

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback