六大基础组件

1.Canvas对象上依附的:
Canvas:画布组件,主要用于渲染UI控件
Canvas Scaler:画布分辨率自适应组件,主要用于分辨率自适应
Graphic Raycaster:射线事件交互组件,主要用于控制射线响应相关
RectTransform:UI对象位置锚点控制组件,主要用于控制位置和对其方式

2.EventSystem对象上依附的:
EventSystem和Standalone Input Module:
玩家输入事件响应系统和独立输入模块组件,主要用于监听玩家操作

Canvas画布组件

1.Screen Space - Overlay:屏幕空间,覆盖模式,UI始终在前;
    Pixel Perfect:是否开启无锯齿精确渲染(性能换效果)
    SortOrder:排序层编号(用于控制多个Canvas时的渲染先后顺序)
    TargetDisplay:目标设备(在哪个显示设备上显示)
    Additional Shader Channels:其他着色器通道,决定着色器可以读取哪些数据

2.Screen Space - Camera(不推荐设置成主摄像机):屏幕空间,摄像机模式,3D物体可以显示在UI之前;
    RenderCamera:用于渲染UI的摄像机(如果不设置将类似于覆盖模式)
    Plane Distance:UI平面在摄像机前方的距离,类似整体Z轴的感觉
    Sorting Layer:所在排序层
    Order in Layer:排序层的序号
    
3.World Space:世界空间,3D模式;
    Event Camera:用于处理UI事件的摄像机(如果不设置,不能正常注册UI事件)

画布 - Unity 手册 (unity3d.com)

CanvasScaler画布缩放控制器组件

CanvasScaler意思是画布缩放控制器,它是用于分辨率自适应的组件,它主要负责在不同分辨率下UI控件大小自适应,它并不负责位置,位置由之后的RectTransform组件负责;

1.屏幕分辨率(UI画布宽高*缩放系数 = 屏幕分辨率):当前设备的分辨率,编辑器下Game窗口中可以查看到;
2.参考分辨率:在其中一种适配模式中出现的关键参数,参与分辨率自适应的计算;
3.画布宽高和缩放系数:分辨率自适应会改变的参数,通过屏幕分辨率和参考分辨率计算而来;
4.分辨率大小自适应:通过一定的算法以屏幕分辨率和参考分辨率参与计算得出缩放系数,该结果会影响所有UI控件的缩放大小;

画布缩放器 (Canvas Scaler) - Unity 手册 (unity3d.com)

缩放模式

根据屏幕尺寸进行缩放,随着屏幕尺寸变化来放大缩小(游戏开发中常用);

1.Reference Resolution:参考分辨率(美术同学出图的标准分辨率);
缩放模式下的所有匹配模式都会基于参考分辨率进行自适应计算;

2.Screen Match Mode:屏幕匹配模式,当前屏幕分辨率宽高比不适应参考分辨率时,用于分辨率大小自适应的匹配模式;
    Expand:水平或垂直拓展画布区域,会根据宽高比的变化来放大缩小画布,可能有黑边(缩放系数 = Mathf.Min(屏幕宽/参考分辨率宽,屏幕高/参考分辨率高));
    Shrink:水平或垂直裁剪画布区域,会根据宽高比的变化来放大缩小画布,可能会裁剪(缩放系数 = Mathf.Max(屏幕宽/参考分辨率宽,屏幕高/参考分辨率高));
    Match Width Or Height:以宽高或者二者的平均值作为参考来缩放画布区(在取平均值之前,我们先取相对宽度和高度的对数,float logWidth = Mathf.Log(屏幕宽 / 参考分辨率宽, 2);float logHeight = Mathf.Log(屏幕高 / 参考分辨率高, 2);,在对数空间中变换是为了获得更好的性能以及更准确的结果,float logWeightedAverage = Mathf.Lerp(logWidth, logHeight, m_MatchWidthOrHeight);scaleFactor = Mathf.Pow(2, logWeightedAverage););

恒定像素模式

无论屏幕大小如何,UI始终保持相同像素大小。

1.Scale Factor:缩放系数,按此系数缩放画布中的所有UI元素;
2.Reference Pixels Per Unit:单位参考像素,多少像素对应Unity中的一个单位(默认一个单位为100像素),图片设置中的Pixels Per Unit设置,会和该参数一起参与计算;

计算公式:UI原始尺寸 = 图片大小(像素)/ (Pixels Per Unit / Reference Pixels Per Unit)

恒定物理模式

无论屏幕大小和分辨率如何,UI元素始终保持相同物理大小(DPI:(Dots Per Inch,每英寸点数)图像每英寸长度内的像素点数)。

1.Physical Unit:物理单位,使用的物理单位种类
2.Fallback Screen DPI:备用DPI,当找不到设备DPI时,使用此值
3.Default Sprite DPI:默认图片DP

单位种类 与1英寸的关系:
Centimeters(厘米cm) 2.54
Millimeters(毫米mm) 25.4
Inches(英寸) 1
Points(点) 72
Picas(皮卡) 

计算公式:根据DPI算出新的Reference Pixels Per Unit (单位参考像素)
新单位参考像素 =单位参考像素 * Physical Unit / Default Sprite DPI
再使用模式一:恒定像素模式的公式进行计算
原始尺寸 =图片大小(像素)/ (Pixels Per Unit / 新单位参考像素)

##3D模式
当Canvas的渲染模式设置为,世界空间3D渲染模式时,这时Canvas Scaler 的缩放模式会强制变为,World 3D世界模式;

1.Dynamic Pixels Per Unit:UI中动态创建的位图(例如文本)中,单位像素数(类似密度)
2.Reference Pixels Per Unit:单位参考像素,多少像素对应Unity中的一个单位(默认一个单
位为100像素)

Graphic Raycaster图像射线投射器

Graphic Raycaster意思是图形射线投射器,它是用于检测UI输入事件的射线发射器,它主要负责通过射线检测玩家和UI元素的交互,判断是否点击到了UI元素;

1.Ignore Reversed Graphics:是否忽略反转图形

2.Blocking Objects:射线被哪些类型的碰撞器阻挡(在覆盖渲染模式下无效)

3.Blocking Mask:射线被哪些层级的碰撞器阻挡(在覆盖渲染模式下无效)

图形射线投射器 - Unity 手册 (unity3d.com)

RectTransform

RectTransform意思是矩形变换,它继承于Transform,是专门用于处理UI元素位置大小相关的组件,Transform组件只处理位置、角度、缩放,RectTransform在此基础上加入了矩形相关,将UI元素当做一个矩形来处理,加入了中心点、锚点、长宽等属性,其目的是更加方便的控制其大小以及分辨率自适应中的位置适应;

1.Pivot:轴心(中心)点,取值范围0~1
2.Anchors(相对父矩形锚点)3.Min是矩形锚点范围X和Y的最小值
4.Max是矩形锚点范围X和Y的最大值
取值范围都是0~1
5.Pos(X,Y,Z):轴心点(中心点)相对锚点的位置
6.Width/Height:矩形的宽高
7.Left/Top/Right/Bottom:矩形边缘相对于锚点的位置;当锚点分离时会出现这些内容
8.Rotation:围绕轴心点旋转的角度
9.Scale:缩放大小
10.Blueprint Mode(蓝图模式):启用后,编辑旋转和缩放不会影响矩形,只会影响显示内容
11.Raw Edit Mode(原始编辑模式):启用后,改变轴心和锚点值不会改变矩形位置

矩形变换 - Unity 手册 (unity3d.com)

EventSystem

Event System意思是事件系统,它是用于管理玩家的输入事件并分发给各UI控件,它是事件逻辑处理模块,所有的UI事件都通过EventSystem组件中轮询检测并做相应的执行,它类似一个中转站,和许多模块一起共同协作,如果没有它,所有点击、拖曳等等行为都不会被响应;

1.First Selected:首先选择的游戏对象,可以设置游戏一开始的默认选择
2.Send Navigation Events:是否允许导航事件(移动/按下/取消)
3.Drag Threshold:拖拽操作的阈值(移动多少像素算拖拽)

事件系统管理器 - Unity 手册 (unity3d.com)

Standalone Input Module

Standalone Input Module意思是独立输入模块,它主要针对处理鼠标/键盘/控制器/触屏(新版Unity)的输入,输入的事件通过EventSystem进行分发,它依赖于EventSystem组件,他们两缺一不可;

1.Horizontal Axis:水平轴按钮对应的热键名(该名字对应Input管理器)
2.Vertical Axis:垂直轴按钮对应的热键名(该名字对应Input管理器)
3.Submit Button:提交(确定)按钮对应的热建名(该名字对应Input管理器)
4.Cancel Button:取消按钮对应的热建名(该名字对应Input管理器)
5.Input Actions Per Second:每秒允许键盘/控制器输入的数量
6.Repeat Delay:每秒输入操作重复率生效前的延迟时间
7.ForceModule Active:是否强制模块处于激活状态

独立输入模块 - Unity 手册 (unity3d.com)

三大基础控件

Text

是UGUI中用于显示文本的关键组件,可以加OutLine组件和Shadow组件配合。

Text参数:

Text:文本显示内容
Font:字体
FontStyle:字体样式
	Normal:普通
	Bold:加粗
	Italic:斜体
	Bold And Italic:加粗 + 斜体
Font Size:字体大小
Line Spacing:行之间的垂直间距
Rich Text:是否开启富文本
Alignment:对其方式
Align By Geometry:使用字形集合形状范围进行水平对其,而不是字形指标
Horizontal Overflow:处理文本太宽无法放入矩形范围内时的处理方式
	Wrap:包裹模式-字体始终在矩形范围内,会自动换行
	Overflow:溢出模式-字体可以溢出矩形框
Vertical Overflow:处理文本太高无法放入矩形范围内时的处理方式
	Truncate:截断模式-字体始终在矩形范围内,超出部分裁剪
	Overflow:溢出模式-字体可以溢出矩形框
Best Fit:忽略字体大小,始终把内容完全显示在矩形框中,会自动调整字体大小
	MinSize:最小多小
	MaxSize:最大多大

富文本:

加粗<b>文本内容</b>
斜体<i>文本内容</i>
大小<size=50>文本内容</size>
颜色:
	<color=#ff0000ff>文本内容</size>
	<color=red>文本内容</size>

文本 (Text) - Unity 手册 (unity3d.com)

Image

是UGUI中用于显示精灵图片的关键组件,除了背景图等大图,一般都使用Image来显示UI中的图片元素。
Image参数

Source Image:图片来源(图片类型必须是”精灵“类型)
Color:图像的颜色
Material:图像的材质(一般不修改,会使用UI的默认材质)
Raycast Target:是否作为射线检测的目标(如果不勾选将不会响应射线检测)
Maskable:是否能被遮罩(之后结合遮罩相关知识点进行讲解)
Image Type:图片类型
	Simple-普通模式,均匀缩放整个图片
	Sliced-切片模式,9宫格拉伸,只拉伸中央十字区域
		Pixels Per UnitMultiplier:每单位像素乘数
		Fill Center:中心填充
	Tiled-平铺模式,重复平铺中央部分
	Filled-填充模式
		Fill Method:填充方式
		Fill Origin:填充原点
		Fill Amount:填充量
		Clockwise:顺时针方向
Use Sprite Mesh:使用精灵网格,勾选的话Unity会帮我们生成图片网格
Preserve Aspect:确保图像保持其现有尺寸
Set Native Size:设置为图片资源的原始大小

图像 (Image) - Unity 手册 (unity3d.com)

RawImage

它和Image的区别是 一般RawImage用于显示大图(背景图,不需要打入图集的图片,网络下载的图等等)。

原始图像 (Raw Image) - Unity 手册 (unity3d.com)

组合控件

Button按钮控件

是UGUI中用于处理玩家按钮相关交互的关键组件。
参数:

Interactable:是否接受输入
Transition:响应用户输入的过渡效果
	None:没有状态变化效果
	ColorTint:用颜色表示不同状态的变化
		TargetGraphic:控制的目标图形
		Normal Color:正常状态颜色
		Highlighted Color:鼠标进入时显示高亮颜色
		Pressed Color:按下颜色
		Selected Color:选中的颜色
		Disabled Color:禁用时的颜色
		Color Multiplier:颜色倍增器,过渡颜色乘以该值
		FadeDuration:衰减持续时间,从一个状态进入另一个状态时需要的时间
	Sprite Swap:用图片表示不同状态的变化
		Highlighted Sprite:鼠标进入时图片
		Pressed Sprite:按下时图片
		Selected Color:选中时的颜色
		Disabled Sprite:禁用时显示的图片
	Animation:用动画表示不同状态的变化
		Normal Trigger:正常动画触发器
		Highlighted Trigger:鼠标进入状态时触发器
		Pressed Trigger:按下时触发器
		Selected Trigger:选中时触发器
		Disabled Trigger:禁用时触发器
Navigation:导航模式,可以设置UI元素如何在播放模式中控制导航
	None:无键盘导航
	Horizontal:水平导航
	Verticval:垂直导航
	Automatic:自动导航
	Explicit:指定周边控件进行导航
Visualize:可以在场景窗口看到导航连线
OnClick:单击(按下再抬起)执行的函数列表(btn.onClick.AddListenter(事件);)

按钮 (Button) - Unity 手册 (unity3d.com)

Toggle开关控件

是UGUI中用于处理玩家单选框多选框相关交互的关键组件,可以通过配合ToggleGroup组件制作为单选框,默认创建的Toggle由4个对象组成,父对象——Toggle组件依附,子对象——背景图(必备)、选中图(必备)、说明文字(可选)。

Toggle参数:

Interactable:是否接受输入
Transition:响应用户输入的过渡效果(同Button)
Navigation:导航模式,可以设置UI元素如何在播放模式中控制器导航(同Button)
IsOn:当前是否处于打开状态
Toggle Transition:在开关值变化时的过渡方式
	None:无任何过渡,直接显示隐藏
	Fade:淡入淡出
Graphic:用于表示选中状态的图片
Group:单选框分组(需要挂载Toggle Group组件)
	Allow Switch Off:是否允许不选中任何一个单选框(注意:单选框分组组件可以挂载在任何对象上,只需要将其和一组的单选框关联即可)
OnValueChanged:开关状态变化时执行的函数列表( tog.onValueChanged.AddListener(事件);

开关 (Toggle) - Unity 手册 (unity3d.com)

InputField文本输入控件

是UGUI中用于处理玩家文本输入相关交互的关键组件,默认创建的InputField由3个对象组成,父对象——InputField组件依附对象 以及 同时在其上挂载了一个Image作为背景图,子对象——文本显示组件(必备)、默认显示文本组件(必备)。
InputField参数:

Interactable:是否接受输入
Transition:响应用户输入的过渡效果(同Button)
Navigation:导航模式,可以设置UI元素如何在播放模式中控制器导航(同Button)
TextComponent:用于关联显示输入内容的文本组件
Text:输入框的起始默认值
Character Limit:可以输入字符长度的最大值(0默认无限)
Content Type:输入的字符类型限制
	Standard:标准模式;可以输入任何字符
	Autocorrected:自动更正模式;跟踪未知单词,向用户建议合适的替换候选词
	Integer Number:整数模式;用户只能输入整数
	Decimal Number:十进制数模式;用于只能输入数字包括小数
	Alphanumeric:字母数字模式;只能输入字母和数字
	Name:名字模式;自动将每个单子首字母大写
	Email Address:邮箱地址模式;允许最多输入一个@符号组成的字符和数字字符串
	Password:密码模式;用星号隐藏输入的字符,允许使用字符
	Pin:别针模式;用星号隐藏输入的字符,只允许输入整数
	Custom:自定义模式;允许自定义行类型,输入类型,键盘类型和字符验证
Line Type:行类型,定义文本格式
	Single Line:只允许单行显示
	Multi Line Submit:允许使用多行。仅在需要时使用新的一行
	Multi Line NewLine:允许使用多行。用户可以按回车键空行
Placeholder:关联用于显示初始内容文本控件
Caret Blink Rate:光标闪烁速率
Caret Width:光标宽
Custom Caret Color:自定义光标颜色
Selection Color:批量选中的背景颜色
Hide Mobile Input:隐藏移动设备屏幕上键盘,仅适用于IOS
Read Only:只读,不能改
OnValueChanged:滑动条值改变时执行的函数列表
	input.onValueChanged.AddListener(事件)
	input.onEndEdit.AddListener(事件)

输入字段 (Input Field) - Unity 手册 (unity3d.com)

Slider滑动条控件

Slider是滑动条组件,默认创建的Slider由4组对象组成,父对象——Slider组件依附的对象,子对象——背景图、进度图、滑动块三组对象。

Slider参数:

Interactable:是否接受输入
Transition:响应用户输入的过渡效果(同Button)
Navigation:导航模式,可以设置UI元素如何在播放模式中控制器导航(同Button)
FillRect:用于填充的进度条图形
Handle Rect:用于滑动的滑动块图形
Direction:滑动条值增加的方向
	Left To Right:从左到右
	Right To Left:从右到左
	Bottom To Top:从下到上
	Top To Bottom:从上到下
Min Value 和 Max Value:最小值和最大值,滑动滚动条时值从最小到最大之间变化(左右、上下极值)
Whole Numbers:是否约束为整数值变化
Value:当前滑动条代表的数值
OnValueChanged:滑动条值改变时执行的函数列表( s.onValueChanged.AddListener(事件)

滑动条 (Slider) - Unity 手册 (unity3d.com)

ScrollBar滚动条控件

是UGUI中用于处理滚动条相关交互的关键组件,默认创建的Scrollbar由2组对象组成,父对象——Scrollbar组件依附的对象,子对象——滚动块对象,一般情况下我们不会单独使用滚动条 ,都是配合ScrollView滚动视图来使用。

ScrollBar参数:

Interactable:是否接受输入
Transition:响应用户输入的过渡效果(同Button)
Navigation:导航模式,可以设置UI元素如何在播放模式中控制器导航(同Button)
Handle Rect:关联滚动块图形对象
Direction:滑动条值增加的方向
	Left To Right:从左到右
	Right To Left:从右到左
	Bottom To Top:从下到上
	Top To Bottom:从上到下
Value:滚动条初始位置值(0~1)
Value:滚动块在条中的比例大小(0~1)
Number Of Steps:允许可以滚动多少次(不同滚动位置的数量)
OnValueChanged:滚动条值改变时执行的函数列表(   sb.onValueChanged.AddListener(事件)

滚动条 (Scrollbar) - Unity 手册 (unity3d.com)

ScrollView滚动视图控件

是UGUI中用于处理滚动视图相关交互的关键组件,默认创建的ScrollRect由4组对象组成,父对象——ScrollRect组件依附的对象 还有一个Image组件 最为背景图,子对象——Viewport控制滚动视图可视范围和内容显示、Scrollbar Horizontal 水平滚动条、Scrollbar Vertical 垂直滚动条。

ScrollRect参数:

Content:控制滚动视图显示内容的父对象,它的尺寸有多大(滚动视图就能拖多远)
Horizontal:启用水平滚动
Vertical:启用垂直滚动
Movement Type:滚动视图元素的运动类型。主要控制拖动时的反馈效果
	Unrestricted(一般不使用):不受限制,随便拖动
	Elastic(常用):回弹效果,当滚出边缘后,会弹回边界
		Elasticity:回弹系数,控制回弹效果。值越大回弹越慢
	Clamped:夹紧效果,始终限制在范围内,没有回弹效果
Inertia:移动惯性,如果开启,松开鼠标后会有一定的移动惯性
	Deceleration Rate:减速率(0~1),0没有惯性,1不会停止
Scroll Sensitivity:滚轮(鼠标中间)和触摸板(笔记本)的滚动事件敏感性
Viewport:关联滚动视图内容视口对象
Horizontal Scrollbar:关联水平滚动条
Visibility:是否在不需要时自动隐藏等模式
	Permanent:一直显示滚动条
	Auto Hide:自动隐藏滚动条
	Auto Hide And Expand Viewport:自动隐藏滚动条并且自动拓展内容视口
Spacing:滚动条和视口之间的间隔空间
OnValueChanged:滚动视图位置改变时执行的函数列表(sr.onValueChanged.AddListener(事件)

Dropdow下拉列表控件

是UGUI中用于处理下拉列表相关交互的关键组件,默认创建的DropDown由4组对象组成,父对象——DropDown组件依附的对象 还有一个Image组件 作为背景图,子对象——Label是当前选项描Arrow右侧小箭头、Template下拉列表选单。

Dropdow参数:

Interactable:是否接受输入
Transition:响应用户输入的过渡效果(同Button)
Navigation:导航模式,可以设置UI元素如何在播放模式中控制器导航(同Button)
Template:关联下拉列表对象
Caption Text:关联显示当前选择内容的文本组件
Caption Image:关联显示当前选择内容的图片组件
Item Text:关联下拉列表选项用的文本控件
Item Image:关联下拉列表选项用的图片控件
Value:当前所选选项的索引值
Alpha Fada Speed:下拉列表窗口淡入淡出的速度
Options:存在的选项列表
OnValueChanged:滚动视图位置改变时执行的函数列表(sr.onValueChanged.AddListener(事件)

下拉选单 (Dropdown) - Unity 手册 (unity3d.com)

进阶知识

图集制作

打图集注意的是在游戏场景插入同图集的图会打断批处理,即使在同一个图集也不行,所以要额外注意UI元素的排列顺序。

事件监听接口

EventTrigger事件触发器

屏幕坐标转UI相对坐标

遮罩Mask

模型和粒子显示在UI之前

异形按钮

自动布局组件

画布组Canvas Group