UGUI
Canvas
- 事件 画布使用EventSystem协助消息系统处理消息
- 显示顺序
//通过transform的一下方法控制显示层级
SetSiblingIndex(int), 值越高,层级越高
SetAsFirstSibling
SetAsLastSibling
- Render Mode ```
-
Screen Space-verlay This render mode places UI elements on the screen rendered on top of the scene. If the screen is resized or changes resolution, the Canvas will automatically change size to match this.
-
Screen Space - Camera 放置到距离相机一段距离处,如果屏幕大小,分辨率和相机视锥体改变,画布也会改变。
-
World Space 允许画布像3D对象一样更改大小,并且会被其它3D对象覆盖,可以做类似游戏内小电视一样的效果。这种模式也被成为 剧情界面(diegetic interface)
```
Layout
可以使用Rect tool 操作UI,通常UI应设置为Pivot and Local
1. Rect Transform
1. 调整大小和缩放
2. 旋转和枢纽
选中按钮, 更改按钮的中心点, 可以做特殊的旋转角度。
3. 锚点(Anchor)
- 通过预设的锚点控制UI位置。(Anchor Presets)
- 手动通过描点准星调整。参考: UGUI Layout
Visual Components
UGUI中内置的可视化组件,Text,Image
1. Text
2. Image
Image可以使用Sprite,Color,Material.
ImageType 字段控制sprite图像的显示模式.包含
simple: 平铺
Sliced: 3x3切片,不会扭曲圆角,只有中心部分拉伸
Tiled: 类似切片,对于没有边框的sprite是平铺的。
Filled: 类型平铺,该选项允许定义方向和其它设置
3. Raw Image
Raw Image允许使用Texture纹理图。但应仅在必要时使用。
4. Mask
添加一个蒙版,控制子对象的显示。覆盖住的部分将是不可见的。
5. Effects
* [UGUI Effects](https://docs.unity3d.com/Packages/com.unity.ugui@1.0/manual/comp-UIEffects.html)
Interaction Components
交互组件至少有一个 UnityEvent, UI system将会捕获和记录附加到UnityEvent上的代码的异常.
1. Button
2. Toggle
3. Toggle Group
4. Slider
可以一个min和一个max value之间拖动,并通过OnValueChanged UnityEvent执行代码.
5. Scrollbar
经常和Scroll Rect和mask一起使用, value 在0和1之间. 并通过OnValueChanged UnityEvent执行代码.
6. Dropdown
callback: OnValueChanged
7. Scroll Rect(Scroll View)
通常于Mask配合使用,只显示Scroll Rect中的内容。
Animation Intergeration
通过Button组件的Transtion选择Animation来设置动画转换效果。 可以通过Button中自带的Auto Generate Animation自动生成Animator Controller(需要保存,只有首次生成才有Auto Genertate Animation选项)
Auto Layout
Auto Layout是建立在Rect Transform之上的布局系统。
1. Layout Element(Script)
通过将该组件添加到游戏对象实现灵活大小调整。
2. Layout Controllers
* ContenSizeFitter(Script)
内容大小调整器
* AspectRadio Fitter(Script)
控制自己的布局元素的大小。
* LayoutGroups
控制其子布局元素的大小和位置
触发布局重建
LayoutRebuilder.MarkLayoutForRebuild(变换为 RectTransform);
StyledText富文本
类似于HTML的标签格式。例如, 不过并不是完全一样。参考: StyledText
消息系统 Messaging System
using UnityEngine.EventSystems;
// IEventSystemHandler 接口, 实现该接口的类都被视为通过消息系统接受事件的目标。
InputModules
UI的触控输入
SupportedEvents
Unity支持的事件。 Standalone Input Module 和 Touch Input Module支持的事件由接口提供。