Unity3D小小小经验篇——Canvas

先说明下,本篇仅仅为个人经验之谈,如果对你有帮助那是最好的,要是没有~那我也没办法╮(╯-╰)╭。大神们看看就算了o(^▽^)o。要是你有什么问题也可以留言我们一起讨论讨论o( ̄▽ ̄)ブ。

首先,UI是什么就不用介绍了,按照unity手册的意思就是,用户的接口(翻译不好,不要吐槽)。也可以说是用户所看到的界面显示元素。在unity5.X中,自带了UI系统UGUI,在建立UI后,如果没有给UI加上Canvas(画布)那么你建立的每一个GUI空间都会自动的创建在一个画布里面。
Unity3D小小小经验篇——Canvas_第1张图片
那么在讲后续的东西前,要先提一下,Unity中UI的绘制顺序和它们出现在Hierarchy的顺序是一样的。这也意味着你要调整GUI控件的顺序只要调整它在Hierarchy的顺序就可以了。
Unity3D小小小经验篇——Canvas_第2张图片
Unity3D小小小经验篇——Canvas_第3张图片
同样的我们也可以用过代码控制GUI空间的绘制顺序他们分别是:Transform中的SetAsFirstSiBling():放在最上面,SetAsLastSibling():放在最下面和SetSiblingIndex(index):放在指定位置。顺序在Hierarchy中从上往下。
Unity3D小小小经验篇——Canvas_第4张图片
然后给Button附上如下代码:gameObject.transform.SetAsLastSibling();
执行代码后,Button自动移动到最下面
至于SetAsFirstSiBling()。效果和上面一样,就是Button如果在最下面那么执行后就会跑到最上边。
最后在看一下SetSiblingIndex(index):
Unity3D小小小经验篇——Canvas_第5张图片
给Button附上如下代码:gameObject.transform.SetSiblingIndex(2);
运行后Button跑到第二的顺序,并且可以看出该方法执行的位置调整是相对于同级的GUI空间,而不会跑到子物体之中
有没有发现,如果我们要实现某个GUI空间的隐藏是不是可以考虑将其顺序放在最下面?这样就可以简单的实现隐藏了。然后再获得当天空间的顺序保存起来,在要恢复的时候将顺序复原即可。
获得顺序代码如下:gameObject.transform.GetSiblingIndex()

好的,介绍完顺序后我们来看下Canvas的组件:
在Csnvas中的RanderMode包含三种方式:
一:Screen Space – Overlay
在这种方式中,UI的绘制层次会在Scene之上,也就是说,在三维空间中,你创建的模型会被建立好的UI覆盖!!
如下我们进行测试:我们创建一个Cube,可以发现,在Image材质不透明的情况下,看不见Cube物体。而当Image材质透明才能看见。
① :我们将Cube一般放在Canvas里面一边放在外面。然而在Game界面中,并不能看见Cube物体
Unity3D小小小经验篇——Canvas_第6张图片Unity3D小小小经验篇——Canvas_第7张图片

② :我们将Canv面板隐藏,发现Cube出现在Game界面中:
Unity3D小小小经验篇——Canvas_第8张图片
二:Screen Space – Camera
在这种方式中,UI的绘制和第一种一样,就是方式进行改变。在Canvas绘制区域会刚好在摄像机照射区域中:
Unity3D小小小经验篇——Canvas_第9张图片
那么,我们可以将需要在UI中显示的物体放置于Canv和摄像机之间就可以显示。同样的,创建一个Cube进行测试
Unity3D小小小经验篇——Canvas_第10张图片Unity3D小小小经验篇——Canvas_第11张图片
如上图:可以清晰的发现Cube出现在了Game窗口中。

三:World Space
在这一种方式中,Canvas相当于世界中的一部分。也就是说他也是一个GameObject,一个可以在三维空间中改变的Panel,也可以对其大小,位置进行调整。但是!他出现在Game窗口的效果是要按照摄像机照射的范围进行调整的。但是一般不是很推荐使用。
还是以Cube进行测试,我们移动Canvas让其不正对摄像机。
Unity3D小小小经验篇——Canvas_第12张图片
可以在下方Game窗口中发现,Canvas没有全部覆盖窗口。

其中,在第一种和第二种的方式中,Canvas是不可以调整的,只有第三种才可以进行调整。
Unity3D小小小经验篇——Canvas_第13张图片Unity3D小小小经验篇——Canvas_第14张图片Unity3D小小小经验篇——Canvas_第15张图片

下面我们进行下小总结:其中三种方式分别用①②③进行称呼。

在三种Canvas中都可以对UI进行编辑,其中①方式中UI是固定在Game窗口上,并且处于最上层,会覆盖后面的物体。②方式中,UI界面和摄像机之间有了距离,若物体在这个距离之间,那么物体就会被绘制出来,反之则被覆盖。③使Canvsa变成一个可调整的三维场景中的Panel,成像原理参考GameObject。

你可能感兴趣的:(Unity学习)