UGUI-Cavans

Canvas是unity中的一个组件。它的意思就是画布,作用就是让UI它上面绘制。所有的UI控件必须是拥有Canvas组件的GameObject的子节点。我们在Scene中创建一个Canvas,其实就是创建了一个带有Canvas组件的GameObject。

Canvas属性:

RenderMode:

RenderMode列举了Canvas的渲染模式,可供选择的有Screen Spcae-Overlay,Screen Space-Camera,World Space。

Screen Space - Overlay

Screen Space - Overlay
在这个模式中,Canvas下并没有摄像机,但是会被渲染。Canvas会自动适配屏幕。

Screen Space - Camera

Screen Space - Camera
这个模式很像NGUI的结构。Canvas下面挂着摄像机(需要自己创建并且指定),摄像机也可以不挂在Canvas下,无论哪种方式都需要在Canvas中指定。摄像机可以设置为透视投影和正交投影,在Canvas上可以挂在多个摄像机,但是在Canvas的属性中只能指定一个。指定的摄像机的视锥体改变的话,Canvas会自动适配。这个摄像机同样可以照射(会被渲染)Canvas之外的renderable,会根据深度来渲染Canvas和之外的Renderable的层级。

World Space

World Space
在场景中,Canvas会和其他的Gameobjet一样,来实现3DUI。
Pixel Perfect: 设置UI绘制是否抗锯齿。
Plane Distance Canvas: 距离Camera多远。实际测试下来不知道有什么用,因为不管调多远(在Camera的Frustum中),Canvas显示效果是不变的。
Event Camera: 用来处理UI的事件(World Space)
Receives Events: Canvas需要处理的事件。


Canvas的渲染顺序:

场景中可以有多个Canvas,可以都在Root下,也可以挂载Canvas下,如果挂在Canvas下,那么会继承父Canvas的渲染模式。
- 在Screen Space-Overlay模式下,渲染顺序是按照Canvas下UI组件的Hierarchy的顺序来绘制的,两个Canvas同在Root下的话是按照Canvas在Root下的Hierarchy的顺序来绘制的,可以更改Canvas下的Sort Order的值来更改Canvas之间的渲染顺序。其他的情况就比较好理解了。
- 在Screen Space-Camera模式下,Canvas是通过深度来绘制的,所以多了一个Sorting Layer,哪个Sorting Layer在前绘制哪个。Order in Layer 细分了同一个Sorting Layer下的渲染顺序。
- World Space和3D空间的规则一样,仅仅用Sort Order来控制。

Canvas Scaler

Canvas Scaler
UI Scale Mode 一共有三个选项

Constant Pixel Size

固定的缩放比例,Scale Factor为缩放倍数。

Scale With Screen Size

这个模式比较像Cocos的屏幕适配方案。Reference Resolution 是理想状态下的分辨率,之后的适配都是参考这个分辨率来计算的。
Screen Match Mode中,Match Width Or Height是按照屏幕的宽或者高来适配的。两种状态分别是填充高度或者填充宽度。Match为0时按照Width,Math为1时按照Height,在中间的话按照权重混合。Expand 比较宽度或者高度的变化比例,选择一个变化较小的比例作为Canvas放大缩小的标准。Shrink 比较宽度或者高度的变化比例,选择一个变换最小的缩小来缩小Canvas比例(实际测试下来如果都需要放大的话会选择1)。

Constant Physical Size

通过调节 Canvas 物理大小来维持缩放不变。这个不是太理解。貌似是根据物理大小实际调整Canvas的物理大小,但是并不改变Canvas的DPI。

Canvas Group

Canvas Group
- Alpha:用来控制Alpha值,控制所有挂载的UI。
- Interactable确认该组件是否接受输入。
- Block Raycasts是否接受射线检测。
- Ignore Parent Groups 是否忽略父Canvas Group

Canvas Renderer

这个很好理解,官方说明:
The Canvas Renderer component renders a graphical UI object contained within a Canvas.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值