大家好,我是孙广东。 转载请注明出处:http://write.blog.csdn.net/postedit/38922399
更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/forum.php?mod=guide&view=my
通常当UI元素定位到RectTransform上时,其位置和大小是手动指定的(选项包括stretch与父Rect Transform)。
然而,有时你可能想要矩形可以自动调整大小来适应UI元素的内容。这可以通过添加一个称为Content Size Fitter的组件。
Fit to size of Text
为了使 Rect Transform与Text文本组件适合它的的文本内容,添加Content Size Fitter组件到具有Text文本组件的同一游戏对象上。然后设置Horizontal Fit、Vertical Fit,或者两个都预先设置。
How does it work?
发生了什么在这里是Text组件功能作为一个LayoutElement布局元素,可以提供有关其最小值和首选的大小是多少的信息。在手动布局中不使用此信息。Content Size Fitter是Layout Controller的一种类型,它听布局信息提供的布局元素和控件的Rect Transform大小。
Remember the pivot
当 UI元素将自动调整大小以适合其内容时,你要额外留意到pivot的Rect Transform。pivot留在的地方,当调整元素大小,所以通过设置pivot的位置你可以控制哪些内件中元素将会扩展或收缩。例如,如果pivot是在中心,然后该元素将展开同样在所有方向上,如果pivot是在左上角,然后该元素将展开向右和向下。
Fit to size of UI element with child Text
如果您有一个用户界面元素如按钮,对它有背景图像和文本组件一个孩子的游戏对象,你可能想要整个的 UI元素,以适应文本-也许与一些边距的大小。
为了做到这一点,首先HorizontalLayout Group水平布局组添加到 UI 元素,然后也添加Content Size Fitter。设置水平适合、垂直适合,这两个的首选设置。您可以添加和调整填充使用 padding 属性Horizontal Layout Group水平的布局组中。
为什么要使用一个HorizontalLayout Group水平布局组?嗯,可能是一个垂直的布局组以及-只要还有只有一个孩子,他们产生相同的结果。
How does it work?
Horizontal (orVertical) Layout Group水平(或垂直)布局组功能作为一种LayoutController布局控制器和Layout Element布局元素。它第一次听由组中的子对象提供的布局信息-在这种情况下子对象文本。然后,它确定如何大组必须为了能包含所有的孩子,和一个Layout Element布局元素,提供有关其最小值和首选的大小这信息作为它的功能。
Content SizeFitter听由任何布局元素相同的游戏对象提供的布局信息-在这种情况下提供的Horizontal (or Vertical) Layout Group。然后,根据其设置,这个控件的RectTransform大小基于此信息的。
一旦设置Rect Transform的大小,Horizontal(or Vertical) Layout Group水平(或垂直)布局组可确保在位置和大小,其子对象根据可用空间。看到的水平布局组的有关如何控制位置和它的孩子大小的详细信息的页面。
Make children of a Layout Group fit their respectivesizes
如果你有一个布局组(水平或垂直),想每个 UI元素组以适合其各自的内容中,你会做什么?
对每个子对象,你不能把ContentSize Fitter。原因是Content Size Fitter想控制控件自己超出Rect Transform的内容,但父布局组想要控制超出子对象Rect Transform。这会产生冲突,结果是未定义的行为。
然而,它也不必要。parent布局组已经可以使每个child适合内容的大小。你需要做的是将布局元素组件添加到每个child,Flexible Width 和 Flexible Height的属性设置为 0。
你看,在默认情况下布局元素将扩大以填充额外的可用空间。为了防止他们的这,布局元素组件可以被添加,在哪里可以重写的设置Flexible Width and Height。
一旦子对象不再扩大与flexiblewidth,可以使用的Child Alignment子对齐方式设置的布局组中指定其对齐方式。
How does it work?
一个游戏对象可以有多个组件每个提供有关minimum最小的、preferred首选的和flexible灵活的大小的布局信息。优先权制度确定哪些值接管别人的影响。布局元素组件具有更高的优先级比文本、图像和布局组组件,所以它可以用来重写它们提供任何布局信息值。
当布局组听子对象所提供的布局信息时,它将会考虑重写的flexible灵活大小(它已设置为 0)。然后,当控制孩子的大小,它不会他们任何大于其首选大小。
More information
本页面已经解释解决分辨率对几种常见的用例。更多在深度的关于自动布局系统的解释,请参见UI Auto Layout页面。