Canvas
1.Screen Space -- overlay
不需要UI摄像机,UI将永远出现在所有摄像机的最前面
2.Screen Space -- Camera
需搭配一个UICamera 。和NGUI的原理类似,目前游戏大多采用这种模式,如果想在UI前先渲染其他的东西,比如特效或3D人物模型,创建一个摄像机深度大于UICamera即可。
3.Screen Space -- World Space
在3D场景中显示UI,如角色血条,角色伤害冒字
UI Scale Mode :Scale With Screen Size
以屏幕高宽为标准缩放
Reference Resolution: 参考分辨率,即一开始制作时选定的屏幕分辨率,后面的选项参数都是根据它来计算的。
Canvas Scaler
以下三种屏幕适配方式都是等比例缩放。
但是:当Canvas子节点的RectTransform采用拉伸时,如全屏拉伸,Canvas将会先采取自身的适配方式,然后再采用全屏拉伸,填满屏幕,此时可能不再是等比例缩放。
如Canvas采用Expand方式,Canvas的子节点采用全屏拉伸:此时先采用Expand方式,如果当前是屏幕上下有黑边,则再采用全屏拉伸方式,即将Canvas拉高,将屏幕填满。不再是等比例缩放。
若Canvas采用Shrink方式,Canvas的子节点采用全屏拉伸:此时先采用Shrink方式,如果当前屏幕是左右两边超出屏幕,因为已将屏幕填满,所以全屏拉伸不再需要执行。仍然是等比例缩放。
Screen Match Mode—Match Width Or Height(适配宽度或高度)
Match是一个滑条,拉在最左时是Width ,最右时是Height,中间则是按比例混合。
当处于最左边时,屏幕高度对于UI大小完全没有任何影响,只有宽度会对UI大小产生影响。
当处于最右边时,与上述情况正好相反,决定整体缩放值的是高度,而宽度则没有任何影响。
处于中间某处时,对上述两者的影响进行权重加成
Screen Match Mode—Expand(显示完整,可能屏幕留空)
当屏幕分辨率大于参考分辨率时,选择变化较小的一个方向(横向还是纵向),作为放大Canvas Scale的标准。
Screen Match Mode—Shrink(填满屏幕,可能超出屏幕)
和Expand类似,但是更适合于缩小的情形。它会在屏幕尺寸缩小时,通过缩小CanvasScale尽量减少由于非等比缩小对布局产生的影响。按照影响较小的一个方向缩小的比例去缩小CanvasScale。
可以使用下面的图片作为image来理解canvas的适配,将参考分辨率设置为图片大小800*600
CanvasGroup
介绍:
Canvas Group可以影响该组UI元素的部分性质,而不需要费力的对该组UI下的每个元素进行逐一得得调整。Canvas Group是同时作用于该组件UI下的全部元素。
参数:
Alpha : 该组UI元素的透明度。注:每个UI最终的透明度是由此值和自身的alpha数值相乘得到。
Interactable : 是否需要交互(勾选的则是可交互),同时作用于该组全部UI元素。
Blcok Raycasts : 是否可以接收图形射线的检测(勾选则接受检测)。注:不适用于Physics.Raycast.。
Ignore Parent Group : 是否需要忽略父级对象中的CanvasGroup的设置。(勾选则忽略)
应用场景:
1、在窗口的GameObject上添加一个CanvasGroup,通过控制它的Alpha值来淡入淡出整个窗口;
2、通过给父级GameObject上添加一个CanvasGroup并设置它的Interactable值为false来设置一套没有交互(灰色)的控制;
3、通过将元素或元素的一个父级添加Canvas Group并设置BlockRaycasts值为false来制作一个或多个不阻止鼠标事件的UI元素;
CanvasGroup内容转载自:https://blog.youkuaiyun.com/qq_38721111/article/details/89190006