菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
354
0

Unity UI UGUI

原创
05/13 14:22
阅读数 59916

 

                   UI:User Interface

                   UE:User Experience

         常见的UI类型

                   环抱式

                   弹框

                   全屏覆盖

                   超全屏

                   3D

         Unity的UI系统

                   OnGUI:最早的UI系统,纯代码实现,写法类似Update

                            优点:出现很早,纯代码可控制

                            缺点:只能程序开发

                   NGUI:Unity著名插件,可实现2D和3D的界面,出现在老项目

                            优点:功能完整,集成了动态效果

                            缺点:性能较弱,交互使用物理引擎实现,需要付费

                   UGUI:官方制作的UI系统,NGUI作者开发

                            优点:性能优秀,功能较完整

                            缺点:功能需要再完善,动画需要配合DOTween

         常见设备的分辨率

                   比例

                             4:3:iPad,安卓Pad

16:9:非全面屏的手机,PC的显示器

                            18:9:全面屏

                            异形屏:向标准分辨率靠近

                   配置常见设备分辨率

 

 

         Canvas组件

                   简答理解:UI绘制在Canvas上,可以理解为画画的纸

                   Canvas在两个模式下(Overlay和Camera)会覆盖整个屏幕,所做屏幕UI显示时,只需要处理好Canvas中的显示即可

                   所有UI元素必须建立在Canvas下,否则会出现不显示的问题

 

                   建立(场景中)

                     

                   三种渲染模式

                            Overlay:Canvas贴在相机镜头上,所有UI元素在场景物体前方显示

                                     Pixel Perpect:高像素清晰度渲染

Sort Order:多Canvas时,控制Canvas显示顺序,越大越在前方显示

                            Camera:使用相机显示Canvas

                                     修改Canvas下Canvas组件Render Mode属性:Camera

                                     将相机拖给Canvas下Canvas组件Render Camera属性

                                     将Cube位置调整到Canvas前

                                     调整Canvas中Plane Distance,控制Canvas到渲染相机的距离

                                    

                                     Plane Distance:Canvas到相机的距离

                                               当SortingLayer和Order In Layer相同时,距离相机越近,显示越靠

                                               前(满足相机渲染关系)

 

                                     Sorting Layer:排序层(多层Canvas中间加粒子)

                                               建立排序层

                                                   

                                               建立顺序

                                                      

                                               修改Sorting Layer

                                               特效的调整(粒子)

                                                        粒子中,Render选项,调整Sorting Layer值为粒子层次值

                                     Order in layer

                                              先通过Sorting Layer,再根据排序层,调整顺序(越大越靠前)

                                     排序关系

                                              排序层一致时,Order in layer越大越靠前

                                              Sorting Layer:配置的排序层顺序,越靠下,显示越靠前

                                     双相机叠加

  1. 建立Camera
  2. 将UI相机拖给Canvas
  3. 将UI的相机设置为使用深度值填充,UI相机的深度要高于主相机
  4. 将主相机不渲染UI元素,将UI相机只渲染UI元素(Culling Mask)

 

                            World Space:Canvas以3D物体的形式显示在场景中

                                     将Canvas模式调整为,World Space

                                     再将Canvas放入相机可视范围内

                                

         Canvas缩放

            

                   该组件会拉伸所有Canvas下的子元素

                   UI Scale Mode:拉伸类型

                            静态模式

                            像素计算模式

                                    

                                     参考分辨率:根据UI设计师提供的参考图像素尺寸

                                     适配方式

                                               宽度或高度自适应

                                               完全自适应(自动计算宽高变化量作为缩放倍率)

                                               世界模式中一米对应UI多少像素

                            物理计算模式

                                     根据英寸进行拉伸计算

 

         项目中

                   使用根据屏幕尺寸进行拉伸

                   设计分辨率,填写美术的效果图像素值(覆盖满整个屏幕)

                   选择Expand:自动计算高度自适应拉伸还是高度自适应拉伸

                   覆盖满整个屏幕的背景图计算

                            默认拿到1280x720的背景图

                            计算方法

                                     18:9下:缺失两边,(设计分辨率高度 / 9)* 18

                                     16:9下:美术一般都会按照16:9出图

                                     4:3下:缺失上下,(设计分辨率宽度 / 4)* 3

 

         RectTransform组件

                   出现位置:出现在所有Canvas子元素中,所有UI元素都应该有RectTransform组件

       

         Pos(XYZ):位置(X,Y,Z),单位(像素),位置是由轴点到锚点的距离

         Width,Height:宽和高,单位(像素)

         Anchors:锚点(四叶草),以父物体参考

                   三种情况

                            单锚点:距离计算是锚点到轴点的XYZ偏移

                            双锚点:元素边界到锚线的距离,轴点到锚线的距离

                            四锚点:元素的四个边界到锚框的距离

                   锚点快速选择工具(十字符号)

                            默认:移动锚点

                            Alt:移动锚点+快速停靠位置

                            Shift:移动锚点+移动轴点+快速停靠位置

         Pivot:轴点(蓝圈),以当前物体参考

                   调整轴点后,位置计算,旋转,缩放都会受到影响,一般轴点都保留在中心点

 

 

周围四个点表示UI元素的边界点

 

元素渲染顺序

         以Hierarchy参考

下方物体在上方物体前显示

子物体在父物体前显示

下方物体永远在前显示,无论上方的层次结构

 

 

 

         资源导入

                   目录建立

                    

                   字体导入

                   图片导入:

  1. 图片拷入项目
  2. 类型装换为精灵(才能被UI使用)
  3. 使用Image组件显示

 

         UGUI的基础组件

         

                   Panel组件

                            一个完整界面,一个Panel

                                     Panel一般位于Canvas子物体,四锚点在四角,边距为零,所以Panel

Canvas一样大,Canvas和屏幕一样大,所以Panel和屏幕一样大,元素

显示处理在Panel中正常,则屏幕中也正常

                   Text组件

                           

Windows 字体 路径: C:\Windows\Fonts

                            文本内容

                            字库选择

                            字体样式(标准,粗体,斜体,粗斜体)

                            字号

                            行间距

                            是否开启富文本

                                     加粗:<b>文字</b>

斜体:<i>文字</i>

大小:<size=字号>文字</size>

修改颜色:<color=颜色名>文字</color>

                     <color=#颜色数(十六进制)>文字</color>

对齐方式(上下对齐,左右对齐)

几何对齐(参考字占用的几何空间)

水平溢出(折行,溢出[出右边框])

垂直溢出(截断不显示,溢出[出下边框])

                            字号自适应

                                     关闭:使用原始字号

                                     开启:字号会在最小值和最大值之间自动调整

                            字体颜色

                            阴影

                                   

                            外发光

                                    

                   Image组件

                            Color:用于混色,美术有时提供白图和色号,程序员对图处理,染成想要的颜色,可以减少包体大小

                            四种类型

                                     普通模式(图标)

                                               Preserve Aspect:保持图片的宽高比,高度或宽度自适应

                                               Set Native Size:可以快速恢复美术提供的图片原始像素尺寸

                                     裁剪模式(九宫格,三宫格)

                                               将图片切分九宫格或三宫格

  1. 找到图片资源
  2. 选择精灵编辑器

 

  1. 九宫格切图

 

1,3,7,9区域不拉伸

2,8横向拉伸

4,6纵向拉伸

  1. Image选择裁剪模式

                                     瓦片模式(无缝贴图)

                                       

                                     填充模式(进度条)

                                               Fill Method:填充方式(360度,水平和垂直)

                                               Fill Origin:填充起始点

                                               Fill Amount:填充百分比

                                               Clockwise:顺时针或逆时针

                                               Preserve Aspect:保持图片的宽高比,高度或宽度自适应

                                               Set Native Size:可以快速恢复美术提供的图片原始像素尺寸

                   Raw Image组件

                            原始图片组件:可以显示精灵或纹理

                            功能相对于Image少,所以性能更好

                            可以控制UV的偏移,来显示精灵的一部分

                                

DrawCall

         屏幕显示过程

                  CPU->加载数据->内存->显存->显卡->显示器

        

         Batchs,就是当前渲染屏幕所有内容所需要的绘制调用数

         每一张独立的UI图,会产生一个DrawCall

 

         优化DrawCall(UI切片)

                   将多个UI切片,合并成一张UI图,UI界面只加载一张UI图片显示

                   

图集制作

 

Allow Rotation:允许旋转(关闭),这块有Bug

Tight Packing:允许合并(关闭),这块有Bug

 

Objects for Packing:所有碎图

  

开启项目的图集生成

 

在游戏引擎中使用的图片,它的边长应该是2N次方像素,如果不是2N次方像素,它会自己补足,自己补充会带来性能损失。

 

使图集生成一直可用(选择Always Enabled)

 

发表评论

0/200
354 点赞
0 评论
收藏