Choose your operating system:
Windows
macOS
Linux
在虚幻引擎4.17中,我们对裁剪系统进行了全面修改,在某些情况下可能会破坏向后兼容性。有关这些更改的更多信息,请参阅此处的 Slate裁剪系统 细节。
UMG中的裁剪系统使用 Slate 裁剪系统 作为框架来控制为控件(或编辑器的其他部分) 显示文本、图像或内容的方式。裁剪 的工作原理是使用边界框将渲染对象(图形和文本)限制在某个区域中,以使超出边界框的任何内容都不显示。裁剪系统现在为轴对齐裁剪, 这意味着它可以裁剪任何旋转,在这之前,由于变形处理方式的缘故,这是不可能的。
在本示例中,每个按钮都是显示的文本的父项。这些示例将展示是由按钮还是文本控制裁剪。
左图 - 按钮或文本上都未启用裁剪。
中图 - 文本上启用裁剪。
右图 - 按钮上启用裁剪。
画布(Canvas) 面板(又称裁剪区)的轮廓为蓝色,代表游戏屏幕,它将会裁剪(即不绘制)游戏超出该区域的任何内容。
在虚幻引擎4.16及更早版本中,控件的裁剪是使用布局空间处理的,它将阻止超出"画布(Canvas)"面板的内容渲染。因此,如果控件边界框的某部分 位于"画布(Canvas)"面板外面,它将不会被渲染,就算旋转了控件,控件边界框也不会使部分图像或文本被裁剪掉,即使它位于 "画布(Canvas)"面板中也不例外。
下面的示例展示了更改前后的对比:
|
图像控件(左侧)被放置在"画布(Canvas)"面板的边缘处,因此其部分边界框位于"画布(Canvas)"面板的外面。裁剪系统现在为轴对齐裁剪(而非使用布局空间),
如对比(右侧)中所示,这种裁剪可以消除瑕疵和问题。
裁剪属性
可以在UMG 细节(Details) 面板的 裁剪(Clipping) 部分下更改基于所选的控件处理裁剪的方式。
属性 |
说明 |
---|---|
继承(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)"。
不同裁剪空间中的元素无法一起进行批处理,因此裁剪会带来性能成本。因此,除非面板真的需要阻止内容在其边界之外显示,否则请勿启用裁剪。