10183人加入学习
(109人评价)
UGUI整体解决方案-基础篇(Unity 2019.1.0f2)

2019-06-01

价格 免费

利用rectransform中的rect的weigh和high方法来获取控件的尺寸

利用轴心点可以控制一边不动

锚点位置的调整是相对于父物体的

锚点打开和分开可以得到不同的功能

 

[展开全文]

这里有坑,轴心点不是(0,0)的位置,轴心点是图片的位置。

LocalPosition: 轴心点相对于rectPanel几何中心点的位置
AnchorPosition:轴心点相对于锚点几何中心点的位置

[展开全文]

Unity UGUI点击事件Bug:

1、引发条件:如果子类上的脚本只实现IPointerClickHandel的click事件时,当父类物体继承自IPointerClickHandel、IPointerDownHandel并且实现了PointerClick、PointerDown方法,那么子物体的click事件会被吞掉,且父物体的click和down事件都不会被执行。

[展开全文]

PointerEventData的 clickTime:记录的是项目运行时的点击时间点。

 

OnPointerDown:获取的是上一次点击时的时间点;

 

OnPointerClick:获取的是当前点击的时间点;

[展开全文]

注意⚠️:目标物体必须添加有Selectable这个组件,才能使用诸如:ISelectHandle、IDeselectHandle、IUpdateSelectHandle的API;

[展开全文]

⚠️注意:

1、IDropHandler 的OnDrop的调用在 IDrapHandle的OnDrap之后,在OnEndDrap之前;

 

2、使用IDrapHandler、IDropHandler拖动物体时,被拖动物体的UI层级需要在IDrapHandle的OnDrap方法里面及时更新UI层级;

 

3、所有的拖拽事件,都必须依靠于IDrapHandler的OnDrap这个API才能起作用;

[展开全文]

UGUI实现事件的3种形式:

1、继承对应的 API 类,实现对应的方法;(推荐,直接使用代码处理);

 

2、在GUI中添加对应功能的事件组件、Event Trigger,加上对应的实现脚本;(不推荐使用,使用不方便。需要结合代码来控制);

 

3、结合GUI上添加的组件 + 代码添加事件;

 

 

[展开全文]

注意事项⚠️:

1、Vertical/Horizontal Layout Group ->Child Force Expend(width、Height)优先级高于 Layout Element(Script)的子项设置; 

2、Layout Element(Script)-> Min Width/Height为预留空间,优先级高于Vertical/Horizontal Layout Group ->Child Force Expend(width、Height)。即即使设置了Vertical/Horizontal Layout Group 勾选了Child Force Expend(width、Height),其子项Layout Element(Script)-> Min Width/Heigh开启的情况下,默认会为Layout Element(Script)-> Min Width/Heigh的值预留空间。然后把,剩余的UI空间进行平分。

 

[展开全文]

1、UI的动画,尽可能使用DoTween去写,不要使用Animation(过于死板);

[展开全文]

1、尽可能避免使用系统组件Mask,会增加draw call、不利于UI部分的层级合并、影响性能。(含有Mask的UI,Mask下的UI会单独draw call)

 

2、Rect Mask(2D)容易出bug问题,不会增加draw call、不影响层级合并。

 

3、自己写mask用于替代。

[展开全文]

Sprite Mode:
 

Single:单个,常用九宫格模式切图模式

Multiple:图集,可自定义切割图集,图集里面也可以进行九宫格切割;

 

[展开全文]

Image(Script) 

Material:材质

Raycast Target:是否能响应图形射线(勾选才能响应事件 )

[展开全文]

决定UI渲染层级的4种因素:

后渲染的图层会覆盖在先渲染的图层之上


1、Camera 的 depth层级,渲染从低位到高位数;

2、Canvas-> Sorting Layer:可以设置自定义层级;

3、当Sorting Layer设置为同一layer层时,order in layer项决定渲染顺序(由小到大进行渲染);

4、工程目录层级渲染:无设定的情况下,则按照工程的目录层级默认进行渲染;

[展开全文]

批量管理Canvas下的UI

Canvas Group

Alpha通道:透明度调整;

InteractTable:点击响应(勾选则不响应);

Blocks Graphics:是否接受图形检测;(勾选则不接受检测);

Ignore Parent Groups:当前的Group是否受父级的group的管理;(勾选则不受父级管理);

[展开全文]

 Graphic Raycaster属性

Ignore Reversed Graphics背对着canvas的图形,射线检测是否要忽略此图形;案例:当图形Y轴进行旋转180度后,此时是背对着canvas,这是如果是勾选,就会忽略不检测此图形;

Blocking Objects: 阻碍射线的 Object 类型,注意:当前点击的物体类型,是通过当前物体的碰撞体(挂载的物体类型)来判定的。 需要配合BlockingMask勾选的 Layer 将会阻碍射线来使用。

Blocking Mask: 勾选的 Layer 将会阻碍射线;

 

只有当前的UI,添加了Graphic Raycaster组件,才能响应事件。 

[展开全文]

用于检测投向Canvas的射线。
Graphic Raycaster既可以配置忽略背面朝上的图形,也可以被UI元素前的2D和3D对象遮挡。

Ignore Reversed Graphics:忽略颠倒的图形的射线检测,即旋转180°后的图片不会与射线发生交互(检测)
Blocked Objects:会阻挡图形射线的对象类型(2D或(/和)3D对象,需要有collider组件)。
Blocked Mask:会阻挡图形射线的Layer。

[展开全文]

1、Scale Factor:在当前画布里所有UI元素的缩放比例(整体缩放)

2、Reference Pixel Per Unit(像素参考单位):当前每个uint(单元)对应的像素数。

3、Pixel Per Unit:每个unit单位含有多少像素数;

 

 

[展开全文]

1、Canvas的属性Render Model:

Screen Space - Overlay:此模式下,当前的UI将会在其他所有层之上;跟Camera没有直接的关系,此模式下绘制的UI将直接显示到显示界面的最上层;

Screen Space - Camera:当前画布需要跟一个具体的Camera关联,canvas的位置由相机决定

World:将当前的画布作为一个3D模型空间的面片显示

2、Pixel Prefect:是否为了正确显示图片的像素,而关闭抗锯齿。 开启:则表示图片抗锯齿处理无效;

 3、sort order:用于UI显示层级排序; 

 

[展开全文]

1、蓝图模式:作用于当前UI的旋转、缩放比例(rotation、scale)控制UI的实际响应区域;

2、原始编辑模式:作用于当前UI的锚点、轴心点;

 

[展开全文]

授课教师

课程特色

视频(61)
下载资料(1)