unity3d画布/UI自适应屏幕的方式
时间:2023-12-19 13:07:02
unity3d在不写代码的情况下代码就可以使用ui适应不同的分辨率。
画布的Canvas Scaler选项中的UI Scale Mode有三种选择:恒定像素,随屏幕尺寸缩放,恒定物理尺寸。在这里,我建议使用第二个随屏幕尺寸缩放。这样,在不同尺寸的分辨率中ui它可以自动变大变小。
选择第二项之后需要填入我们使用的标准分辨率。填我们制作时主要考虑的分辨率即可。之后制作时也是先在这个分辨率下制作和观察效果,之后再切换其它分辨率看有没有问题。
下面的Screen Match Mode有三种选择:匹配宽度和高度、扩展和收缩。分别说明:
匹配宽度和高度:根据权重和宽度高度进行调整。 下面会有一根滑杆来调节重量。一般可以直接取中间。
扩展:当屏幕比例不是标准比例时,扩展画布的长度和宽度之一以达到比例。ui完全显示。但屏幕边缘也可能出现无内容区域。我觉得这个选项比上一个更有利于保持ui房间的位置不变。
收缩:当屏幕比不是标准比时,收缩长度和宽度之一以达到比例。它可能会使ui部分在屏幕外。
这里补充一个游戏新建ui缩放异常坑的描述:在游戏中根据预制体新建ui为新建物体设置父物时,应使用
.SetParent(物体transform,false)
不能直接使用.SetParent(物体transform.transform)。
在其他分辨率下设置画布自适应屏幕后scale如果直接使用,会变化(变小/变大).SetParent(物体transform),新建ui的scale也会发生相应的变化(变大/变小)。因此,应该ui图片看起来很大/很小。
也可重新设置scale避免缩放异常:.transform.localScale = Vector3.one;