1、Rect Transform组件
2、Canvas
3、自动布局和选项
包括下拉列表、网格、滚动区域
可创建组件类型包括:
①Horizontal Layout Groups
②Vertical Layout Groups
③Grid Layout Groups
4、布局选项
Unity提供了多种布局覆写方案,进而限定组件的空间应用,或者作为独立的UI元素加以使用,包括:
①Layout Element:宽、高的限制及放缩
②Content Size Fitter:对Rect Transform的限制
#当与包含目标平台分辨率尺寸的相关内容协同工作时,或者在父GameObjec或动态尺寸内容上包含了额外的背景图像/布局时,Content Size Fitter则变得十分重要。
③Aspect Ratio Fitter:附加组件,可据此对UI进行组织
#表示为UI元素的宽高比,而非屏幕分辨率的宽高比。
④Scroll Rects:布局组件大于显示范围,提供某一区域,对应的交互行为针对所选的Rect Transform内容生成滚动效果
⑤Masks:将子组件的绘制操作限定于其所绑定的、GameObject的Rect Transform中
5、分辨率和缩放行为
鉴于UI需要在多种屏幕类型上予以显示,因而需要设计并实现较好的UI,并适用于任意分辨率
Unity提供了分辨率放缩组件,在默认状态下与Canvas进行绑定,进而控制GameObject以及内部组件的、基于分辨率的绘制操作,该组件成为Canvas Scaler
①Canvas Scaler包含多种操作模式,在进行屏幕绘制时调整Canvas的缩放方式,包括:
②Constant Pixel size:不存在任何分辨率控制
③Scale with Screen Size:生成虚拟空间,并与期望分辨率进行匹配
④Constant Screen Size:使得用户可采用与绘制分辨率相适的DPI(每英寸单位数)进行绘制,而非实际的物理分辨率或世界空间坐标
6、UnityEvent系统
①光线投射机制
#Physics Raycaster:3D模型和3D碰撞对象间执行光线投射测试
#Physics 2D Raycaster:限于2D精灵对象和2D碰撞对象
#Base Raycaster:高级的基础实现,可创建自己的光线投射系统
此类系统均依赖于Event Camera,并用作全部光线投射的源。用户可在场景中配置任意相机。
②输入模块
Unity提供的输入模块如下:
#Standalone Input Module:表示为基本的键盘和鼠标输入
#Touch Input Module:表示为基本的触摸输入系统
#Pointer Input Module:高级类,除前述模块功能,同时还可以通过代码进行访问
#Base Input Module:基本的输入系统,可在代码中定义新的实现方式,并提供了全新的框架处理输入交互行为
③输入事件
对于最新的输入事件系统的核心内容,存在多种界面可描述不同的事件类型,介绍如下:
#PointerEnter(IPointerEnterHandler/OnPointerEnter):鼠标进入Unity UI控件区域时的对应点
#PointerExit(IPointerExitHandler/OnPointerExit):鼠标离开Unity UI控件区域时的对应点
#PointerDown(IPointerDownHandler/OnPointerDown):当Mouse按钮以及Touch被按下时被触发且每帧内触发
#PointerUp(IPointerUpHandler/OnPointerUp):当Mouse按钮以及Touch被释放时被触发(不包括单击操作的释放操作)
#PointerClick(IPointerClickHandler/OnPointerClick):用户释放鼠标单击操作或同一GameObject上的触摸操作被触发
#Drag(IDragHandler/OnDrag):当可拖拽对象开始移动时被触发
#Drop(IDragHandler/OnDrag):可拖拽对象处于被移动,且鼠标或触摸操作已被释放,同时完成运动行为
#Scroll(IScrollHandler/OnScroll):使用鼠标或控制器滚轮时被触发
#UpdateSelected(IUpdateSelectedHandler/OnUpdateSelected):控件内容被更新时被触发
#Select(ISelectHandler/OnSelect):对象或切换控件被选取或处于焦点时被触发
#Deselect(IDeselectHandler/OnDeselect):对象或切换取消选定或失去焦点时被触发
#Move(IMoveHandler/OnMove):可拖拽对象处于运动状态时,表示所触发的持续事件
对于管理和捕捉的事件,用户需要使用到绑定于相机上的、相应的RayCast系统,进而对GameObject进行渲染。
例如,将脚本绑定至3D模型上,则需要向主3D相机添加Physics Raycaster,该3D对象需要使用某种3D碰撞器。
④事件触发器
除了代码方案之外,还可以通过图形系统向GameObject添加事件,即采用Event Trigger
可使得用户实现下列操作:
#在查看器中创建事件钩子(即PointerClick和PointerExit)
#将事件结果绑定至GameObject上
#选取某一属性、脚本或者目标对象上的其他属性进行操控
#适当情况下,可向目标调用提供值或输入
