版本:Unity5.4.2f1
Canvas(画布)
手册:https://docs.unity3d.com/Manual/class-Canvas.html
这个组件是代表UI布局和渲染的空间。所有UI元素必须是在一个有Canvas组件的对象下。当在没有Canvas场景中创建一个UI元素时,同时也会生成一个Canvas对象。
![](https://www.eimg.top/images/2020/04/01/bc3e47ec5e15224d7eb527aed012f515.png)
![](https://www.eimg.top/images/2020/04/01/7b0006e3ed4d10fbda8055ca75b9f957.png)
![](https://www.eimg.top/images/2020/04/01/2294a98c038be6749f82324b93592e7e.png)
参数:
Pixel Perfect (Screen Space modes only):不使用反锯齿渲染UI
Render Camera (Screen Space - Camera mode only):选择一个绘制UI的摄像机
Plane Distance (Screen Space - Camera mode only):放置UI平面在摄像机前面的距离大小
Event Camera (World Space mode only):处理UI事件的摄像机
Receives Events:是否通过该摄像机处理UI事件
补充:
一个场景中只有一个Canvas是足够的,但也允许同时存在多个Canvas。也可以嵌套多个Canvas,但嵌套的Canvas是和父级的渲染方式一样。
嵌套的Canvas截图:
![](https://www.eimg.top/images/2020/04/01/049cfb9757e626ff13218ca9770b6d05.png)
通常是把UI元素作为一个绘制在屏幕上的图形,而没有把UI元素当作为一个3D空间内的对象。
在Unity中不仅支持使用传统的渲染概念,同时也支持把UI元素作为一个3D对象的渲染思想。
Screen Space - Overlay
在这种模式下,Canvas是自适应屏幕的,同时也不需要依赖任何实际的场景或摄像机。UI会被最后渲染。
注意:选择这种模式,需要让Canvas对象放在Hierachy视图的最上层层级(即transform.parent = nil)。否则,UI可能会消失。
![](https://www.eimg.top/images/2020/04/01/863951e0f4f565585898aa2daacb3627.png)
Screen Space - Camera
这种模式下,Canvas会根据UI平面与摄像机的截面的缩放而自适应。在UI平面前3D对象的会显示在UI前,而在后面的会显示在UI平面的后面。
![](https://www.eimg.top/images/2020/04/01/b70a37025618642a7e909ecd2b4aa69b.png)
World Space
在这种模式下,Canvas会被作为一个Plane对象存在。此时,Canvas不用面向摄像机,角度可以任意调整。同时,Canvas不会再自适应,而是需要控制RectTransform的Width和Height进行缩放。
![](https://www.eimg.top/images/2020/04/01/11d82a83fe8410fd5176c16e229a7195.png)
RectTranform
手册:https://docs.unity3d.com/Manual/class-RectTransform.html
RectTransform继承Transform,用于2D对象上。是个矩形状。
![](https://www.eimg.top/images/2020/04/01/8a4e7d49779ac83f3702b8613386201a.png)
参数
- Anchors :布局(缩放)锚点。Min代表左下角,Max代表右上角。(以父级对象的矩形左下角为原点)
- Pivot : 2D对象的中心点
来源:https://www.cnblogs.com/He-Ming/p/6097156.html