Unity 4.6 - 如何将GUI元素缩放到适合每种分辨率的正确大小

时间:2014-08-25 00:12:03

标签: user-interface unity3d 2d-games

新的Unity 4.6带有一个新的GUI,当我在Unity上更改分辨率时,UI按钮完美缩放但是当我在Nexus 7设备上测试时,按钮看起来太小了。知道如何解决这个问题吗?

Unity 4.6

Android - Nexus 7 2Gen

5 个答案:

答案 0 :(得分:23)

Unity的新GUI系统使用“锚点”来控制gui元素(如按钮)相对于其父容器的缩放程度。

Unity有一个关于如何使用新的“Rect Transform”组件(配置锚点的地方)的教程视频:http://unity3d.com/learn/tutorials/modules/beginner/ui/rect-transform

本教程的后半部分是关于锚点的。该页面包含指向整个教程系列的链接。这不是太长。你应该看完整件事。

特定于您的问题:

在第一个屏幕截图中可以看到锚点。它们是按钮左上角的4个小箭头。

现在,您的按钮仅位于其左上角。

需要将两个右锚点向右拖动,以便按钮的右边缘锚定到其父容器内的空间。

根据您的情况,可能需要向下拖动两个底部箭头,以便按钮的下边缘也可以固定。

我上面链接的视频详细介绍了所有这些内容。

最后,为了使字体大小能够在不同分辨率下很好地扩展,您需要在UI的基础画布中添加和配置参考分辨率组件,如前面Ash-Bash32所述。

更新:添加参考分辨率组件的最佳方法是通过UI中基础画布的检查器窗口。

1)单击检查器底部的“添加组件按钮”。

2)在搜索过滤器字段中输入“参考”一词。

3)在搜索结果中选择“参考分辨率”组件。

steps to add a reference resolution component in Unity

答案 1 :(得分:21)

参考分辨率现在重命名为Canvas Scaler ..随着重命名,它们为Canvas的动态性添加了更多功能。您可以浏览Unity Doc of Canvas Scaler并查看this article,了解如何以及为何使用Canvas Scaler的实际示例。另外,请确保使用Anchor Points以获得更好的效果......

答案 2 :(得分:10)

要缩放UI,将ReferenceResolution Component添加到要缩放的Canvas中。 enter image description here

P.S。没有参考文献的文件

答案 3 :(得分:2)

如果您希望所有屏幕和分辨率的按钮大小相同,则必须将画布缩放器组件添加到画布并将屏幕匹配模式设置为:匹配宽度或高度,此处是指向docs,如果你想要针对不同的尺寸或分辨率,这会有很大的帮助:

http://docs.unity3d.com/Manual/HOWTO-UIMultiResolution.html

答案 4 :(得分:1)

一旦你开始在代码中放置东西并使用画布缩放器,这就变得巨大而复杂,所以我希望提供一个彻底的答案来拯救某人我经历的时间。

首先,不要使用anchoredPosition定位任何东西,除非你完全意识到它是一个0.0到1.0的数字。使用RectTransform localPosition进行实际布局,并记住它与父锚点的关系。 (我不得不从中心布置一个网格)

其次,在父布局对象和内部ui片上放置画布缩放器。一个使布局处于正确的位置,另一个将调整元素的大小,使它们实际显示正确。除非孩子们也有缩放器(以及触摸它们的图形射线播放器),否则你不能依赖父。

第三,如果您有一个缩放器,请不要使用Screen.width和height,而是假设屏幕与您为缩放器放置的值相同(希望您使用相同的值,或者知道您正在做什么)。屏幕宽度始终返回实际设备像素,视网膜设备,但画布缩放器不会考虑到这一点。如果你的游戏想要它,这可能会让你找到实际屏幕dpi的剩余方法。编辑:此段落适用于连接到您的布局代码的任何父画布。不是流浪的画布,你可以把它混合起来。只要记住团结关于画布表现的指导原则。

第四,画布仍然有点儿麻烦。即使进行了上述工作,在删除并重新创建画布之前,如果重新打开场景或崩溃,某些内容也不会呈现。否则,以上是我发现的一般“规则”。

要使“物体网格”居中,你不能只使用画布缩放器的一半宽度或高度,你必须计算网格的高度并将偏移量设置为它的一半,否则它总是会略微关闭。我刚刚添加了这个作为额外提示。此计算适用于所有方向。