UGUI-- Canvas对象及Canvas组件

1、Canvas渲染模式控制组件:

画布,是UGUI中所有UI元素能够被显示的根本,主要负责渲染自己的所有UI子对象

注意:如果UI控件对象不是Canvas的子对象,那么控件将不能被渲染,可以通过修改Canvas组件上的参数修改渲染方式

2、场景中可以有多个Canvas对象:

可以分别管理不同画布的渲染方式,分辨率适应方式等参数(不常用)

注意:如果没有特殊需求,一般场景上一个Canvas即可

第二个Canvas对象需要通过UGUI单独创建,即右键新建Canvas对象

3、Canvas的3种渲染方式(Render Mode)   

(1)Screen Space-Overlay:屏幕空间,覆盖模式,UI始终在前

pixel Perfect:是否开启无锯齿精确渲染(性能换效果)

SortOrder:排序层编号(用于控制多个Canvas时的渲染先后顺序),数字越小越先渲染,先渲染的会被后渲染的覆盖

TargetDisplay:目标设备(在哪个显示设备上显示)

Additional Shader Channels:其他着色器通道,决定着着色器可以读取哪些数据

(2) Screen Space-Camera:屏幕空间,摄像机模式,3D物体可以显示在UI之前

RenderCamera:用于渲染UI的摄像机(如果不设置将类似于覆盖模式Overlay)

不建议将UI渲染的摄像机设置为主摄像机,因为这样不太方便控制3D物体和UI的渲染顺序,可能会导致3D物全部显示在UI之前。

Plane Distance:UI平面在摄像机前方的距离,类似整体Z轴的感觉。值越小离摄像机越近,可以通过该参数控制UI与3D物体的前后顺序 。但是,游戏时可能物体回离摄像机很近,那么还是会出现物体出现在UI之前的情况,所以不建议使用主摄像机设置为渲染的摄像机,即使可以暂时通过Plane Distance参数控制物体与UI的前后关系

渲染摄像机解决方式:新建一个摄像机,将Culling Mask参数只设置UI层,而主摄像机的Culling Mask参数不勾选UI层(否则Game窗口可能会出现重复的物体),然后将新建的摄像机放入Canvas的Render Camera参数作为专门渲染UI的摄像机

但此时还是会有一个问题:由于Camerad的参数Depth的关系,目前可能 会导致Game窗口只有UI摄像机的画面或者主摄像机的画面,因此:

将UI摄像机的Clear Flags设置为Depth only,此时两个摄像机的画面都可以显示,物体与UI的前后顺序仅由Depth决定。一般UI在前物体在后,即UI层的Depth大,主摄像机层的Depth更小

如果需要令物体显示在UI之前,通常是单独去操作,因为这种情况出现较少,即在UI层Canvas渲染画面下创建相应的模型,通过控制Z轴来控制UI与模型的位置(因为UI可能为了自适应分辨率,会对物体进行缩放,可能需要进行适时的缩放调整)——举个例子,在游戏中会查看人物属性信息,同时会显示人物模型,这个人物模型就显示在UI之前,但此时的人物模型与游戏中的模型分属UI层和Game层,而UI层的模型始终会显示在Game层的前面

Sorting Layer:所在排序层(在Layer——>Adding Layer——>Sorting Lyaers中添加),新Layer总比旧Layer优先级高,即显示在前

Order in Layer:排序层的序号(同一层级的前后渲染关系,不同层时只受Sorting layer的顺序影响,该参数无法改变渲染关系)

(3)World Space:世界空间,3D模式(UI可能会随着人物旋转,VR,AR)

可以把UI对象像3D物体一样处理

Event Camera:用于处理UI事件的摄像机(如果不设置,不能正常注册UI事件),一般关联的是主摄像机,因为需要与其他的3D物体进行交互

你可能感兴趣的:(Unity学习,#,Unity初级,#,Unity--UI,unity)