前提
- 就是突然理解了UGUI锚点的各种事情
- 以前都是在跟着做,但是不理解其中原理
- 需要锚点定位,是因为画布尺寸发生改变
- 一般只有适配全屏的图片会发生尺寸改变,以他为父物体的就需要锚点。但是其它都不需要
- 用expand可以保证图像全部在内部。shrink会让图像被裁切
全屏
-
unity在打包时候有一个输出选项,是否全屏
-
如果你选择了,在打开程序时就会自动全屏
-
那么UGUI做了什么呢,看下图
-
我一直以为ugui并没有改变画布的宽高,只是等比缩放。但实际上,你可以看到,他直接把高度拉伸变成960,再进行缩放
-
按照我的思考模式,如果只是进行缩放,根本没有必要进行锚点定位。所有的物体等比缩放就是了
-
既然改变了尺寸,就需要锚点定位了,锚点定位的意思就是,物体的四个顶点相对锚点的距离不变。你可以设定这四个锚点在父物体上的位置。这样父物体发生尺寸改变的时候,子物体的位置也发生变化
-
所以UGUI的操作是这样的,先改变canvas的尺寸,再进行缩放。
扩展还是收缩
- 当前设备屏幕的宽高比和目标宽高比
- screen.x/target.x 和screen.y/target.y
- 取他们中比例较小的那个作为缩放比例,这样就会导致扩展,不会让UI全部挤在一起。
- 举例来说
目标比例1280*720
现在设备比例是800*600
800/1280=0.625
600/720=0.833
选择最小的缩放比例,0.625
这时候高度720*0.625 = 450,很明显小于450
所以需要改变高度尺寸为960,属于是扩展了。
但是你选择比较大的那个缩放比例0.833,
这时候就会改小宽度的尺寸为960*0.833 = 800
-
如果画布的尺寸缩小了,就可能导致UI挤压在一块
-
在目标分辨率下很挤的两个UI
-
如果画布缩小,就会导致UI挤在一块