效果如下:

首先感叹一下,UGUI的自适应做的还是非常不错的,RectTransform中提供了非常多种的自适应方式.对做界面来说还是很友好的.

如果界面上需要有个全屏的背景图(UI界面一般都是有的吧,弹框啥的除外),那么需要简单的这样设置就可以满足屏幕的自适应了(so easy):

不过这样的自适应方式是直接拉伸铺满整个屏幕的方式,并没有保障等比例拉伸,就是说背景图就会出现变形,以下面这张图为例(注意黄色的圆):

自带的自适应效果是这样的:

而等比例拉伸自适应的效果是这样的:

实现
第一步
既然是自己写代码来做自适应那么就得去掉UGUI给我们提供的自适应方式,修改为居中的方式

第二步: 获取当前需要展示的屏幕尺寸.
屏幕尺寸的获取直接通过Screen.width和Screen.height即可,但是如果Canvas中用了CanvasScaler中的ScreenMatchMode,那么画布的尺寸则不一定和屏幕分辨率一样(会出现我的RawImage的width和Height值设为屏幕分辨率,但还是没有刚好和屏幕吻合的情况)

不过可以简单的直接获取Canvas的尺寸:
//当前画布尺寸
Vector2 canvasSize = gameObject.GetComponentInParent<Canvas>().GetComponent<RectTransform>().sizeDelta


1752

被折叠的 条评论
为什么被折叠?



