Unity数字孪生开发笔记——GUI控件篇
一、常见OnGUI控件
二、UGUI
1、简介
- Unity图形用户界面 Unity Graphical User InterFace 是Unity4.6以上版本新加入的界面显示系统
- 与OnGUI对比
----全新的布局系统
~~~~~ Rect Transform ~~~~~ Layout Group
----强大的事件机制
~~~~~ 鼠标指针类 拖拽类 点选类 输入类
----最佳的执行效能
~~~~~ 减少了GPU负担 - 与NGUI对比
----由NGUI创始人参与开发
----自适应系统更完善
----更方便的深度处理
----淡化了Atlas(图集),直接使用Sprite Packer
----UGUI没有Tween组件
----开发效率暂时低于NGUI
2、控件
1>Canvas画布
-
简介
----画布,绘制UI元素的载体,所有UI元素必须在Canvas之下。UI元素的绘制顺序依赖于层次面板中的顺序。
1、创建UI对象:在Hierarchy面板右键–>UI,在UI界面中选择的对象都是UGUI对象。在操作这些对象时,建议按如下所示:
~~~ 此时,左键是移动物体,右键是移动场景,点顶点可进行方法缩小,而改变的宽度和高度对象对应于Inspector的像素。
-
属性
----Render Mode 渲染模式
1、Screen Space-Overlay 覆盖模式:UI元素将会在其他元素之前,而且绘制过程独立于场景元素和摄像机设置,画布尺寸由屏幕大小和分辨率决定,屏幕坐标系与世界坐标系等价
~~~ Pixel Perfect 完美像素:若勾选,则会锐化屏幕显示效果
~~~ Sort Order 渲染顺序:在多个Canvas中,值越大越渲染到最上层
2、Screen Space-Camera 摄像机模式:需要提供一个UICamera(如果不提供,将等价于覆盖模式),Canvas对象被绘制在一个与摄像机固定距离的平面上,且绘制效果受摄像机参数的影响
~~~ Rander Camera 渲染摄像机
~~~ Plane Distance 平面与摄像机的距离
~~~ Sorting Layer 排序层:通过Edit–》Project Settings–》Tags and Layers–》Sorting Layers 调整Canvas渲染顺序
3、World Space 世界空间模式:画布渲染于世界空间,与场景中其他3D物体性质相同 -
适用性:
---- UI覆盖物体,使用Overlay
---- 物体覆盖UI,使用Camera
---- UI与物体性质相同,使用World Space -
UI摄像机与主摄像机的配合使用:当想使用3D物体盖住UI对象时,通常会采用摄像机模式,渲染相机采用主摄像机,但这样会使得屏幕的渲染量过大,消耗性能增加,但可以通过以下步骤进行改善
1、创建新的UI摄像机,并将其拖入Rander Camera
2、将UI摄像机的Clear Flags改为 Depth Only,Culling Mask设置为仅UI,为了避免出现多个摄像机的覆盖问题,将UI摄像机的Depth 改为大于Main Camera的值(比如主相机设为-1,UI相机设为0)
3、将主相机的Culling Mask 中的UI项取消勾选,变为Mixed
4、将想要覆盖住UI的物体的Layer层改为UI层
5、保险起见,还可以将UI相机放在世界的某个角落(可忽略)
6、经过以上步骤,就可以实现将3D物体挡在UI界面前,而且性能消耗都比直接拖动Main Camera好
2>Rect Transform 矩阵变换
- 简介
派生自Transform,在UGUI控件上替代原有变换组件,标识一个可容纳UI元素的矩阵 - 属性
----Pos :控件轴心点相对于自身锚点的位置
----Anchor 锚点:UI元素的4各顶点与锚点的间距保持不变,锚点总是相对于父级,不能超越父物体范围;
~~~~~ 表示点 -->PosX ~ PosY ~ Width ~ Hight
~~~~~ 表示拉伸 --> Left ~ Right ~ Top ~