1、UGUI介绍

GUI就是Graphical User Interface(图形用户界面)简称。在Unity还未更新UGUI之前最流行的做UI的插件是NGUI。自从Unity4.6开始后,集成到了编辑器中,大大方便了开发。

2、UGUI基本控件

2.1 Canvas---画布

每当你创建一个UI物体时,Canvas都会自动创建。所有的UI元素都必须是Canvas的子物体。

和Canvas一同创建的还有一个EventSystem,其是一个基于Input的事件系统,可以对键盘、触摸、鼠标、自定义输入进行处理。



Render Mode

Screen Space - Overlay:让UI始终位于界面最上面部分

Screen Space - Camera:赋值一个相机,按照和相机的距离前后显示物体和UI

World Space:让画布变成一个3D物体可以移动等

UI Scale Mode

Constant Pixel Size:根据像素大小计算UI位置和尺寸。当屏幕尺寸改变时,UI大小不会变而其他物体会变。

&ensp&ensp&ensp Scale Factor:UI缩放系数

Scale With Screen Size:根据不同屏幕尺寸自动改变UI大小

&ensp&ensp&ensp Reference Resolution:设置为屏幕尺寸

Constant Physical Size:根据物理

Graphic Raycaster:图片射线

只有UI的元素才继承了Graphic基类,才能响应图片射线。

Ignore Reversed Graphic:图片翻转后点击无效

Blocking Objects:阻挡点击物体(当UI前面有物体时,点击前面的物体射线是否阻挡)

Blocking Mask:阻挡层级

2.2 Text



Line Spacing:行间距

Rich Text:富文本---可以结合多种字体类型和大小,寻找文本中的标记标签,就和HTML中对字体的类型设置很像。

如果想在同一个Text中实现不同的字体有不同的大小颜色等效果就可以使用富文本。

格式和Html5的格式大体相同,但并不是完全兼容

<b>粗体</b>
<i>斜体</i>
<size=50>大小</size>
<color=#ff000000>颜色</color>
<color=red>颜色</color>

Alignment:设置对齐

Align By Geometr:几何方向的对齐

Horizontal Overflow:选择溢出的处理方式---文本水平超出最大宽度时,是自动换行还是就溢出不显示。

Vertical Overflow:以上同理

Best Fit:是否忽略对文字大小的设置---选中文字会自动改变大小来全部显示出来。

Raycast Target:UGUI创建的所有组件都会默认勾选,UI事件会在EventSystem的Update的Process触发。UGUIh会遍历所有Raycast Target是true的UI,发射射线找到玩家最先触发的那个UI,抛出事件给逻辑层去响应。

	private Text text;

	void Start () {
text = transform.GetComponent<Text>();
text.text = "你好呀";
text.fontSize = 20;
text.color = Color.blue;
text.fontStyle = FontStyle.Bold;
}

2.3 Image



Source Image:转为Sprite格式的图片可以赋值。

Preserve Aspect:图像宽高是否按原始比例

Set Native Size:返回原始大小

Image Type

  1. Simple:在拉伸区域内完全显示一张图片
  2. Sliced:按九宫格显示,九宫格在图片资源中设置。拉伸时九宫格四周大小不变,上下只会左右拉,左右只会上下拉。
  3. Tiled:平铺,在选中范围内显示n张原始大小的图片。
  4. Filled:按各种方法切割图片。(经常用于技能冷却)。
    public Image image;
public Sprite sprite; //可以修改Image的图片
void Start () {
image = transform.GetComponent<Image>();
image.sprite = sprite;
}

2.4 RawImage



Image显示的是Sprite格式的图片。

RawImage显示的是Texture格式的图片。

RawImage一般用于背景、图标上,一般用于显示外部图片。

当显示一张外部加载的图片且不用交互时,所用时间远低于Image。

UV Rect:纹理坐标,可以用其实现帧动画。

Raw Image的另一个使用技巧:在2D界面上实现3D物体

  1. 新建一个Render Texture,赋值到相机的Target Texture。用于获取相机的3D显示内容。
  2. 把RT赋值到Raw Image。让Raw Image接收相机的3D内容。
  3. 再新建个相机,就可以在新建相机2D界面中添加3D内容。

2.5 Button

Interactable:是否可交互

Transition:过渡方式

  1. 颜色过度

    Target Graphic:过渡效果作用目标

    Normal Color:默认颜色

    Highlighted Color:高亮颜色

    Pressed Color:按下颜色

    Diasbled Color:禁用颜色

    Color Multiplier:颜色切换系数

    Fade Duration:衰落延迟
  2. 图片过度---基本同理
  3. 动画过度

Navigation:按钮导航---在EventSystem中,有个当前被选中的按钮,可以通过方向键或代码控制,使被选中的按钮进行更改。

Visualize:可以把按键能导航到的路径可视化,高亮黄色箭头显示。

Button添加点击事件的两种方法

  1. 直接在界面OnClick处添加事件。
  2. 通过代码给按钮添加点击事件。
    public Button btn1;
public Button btn2; void Start()
{
btn1.onClick.AddListener(NoParameter);
btn2.onClick.AddListener(()=>HaveParameter("Hello"));
} private void NoParameter()
{
Debug.Log("Hello");
} private void HaveParameter(string str)
{
Debug.Log(str);
}

2.6 Toggle

主要选项和Button相同

Is On:默认是否选中。

Toggle Transtion:切换是是否有过渡效果,Fade表示有,None表示没有。

Graphic:设置开关要起作用的对象,不一定非要是默认的对号。

Group:设置分组。把多个Toggle放在同一个物体下,在这个物体上添加Toggle Group,并给Toggle赋值,就可以实现单选。

On Value Change:当Toggle值改变时所调用的函数。

2.7 Slider



Slider下的Background:表示未进度的区域的显示图片。

Slider下的Fill:已经进度的显示图片。

Slider下的Handle:可滑动块块的图片

Fill Rect:设置用于显示已经是进度区域的图片。

Handle Rect:设置可滑动块块的图片。

Direction:方向,从左到右、从上到下之类的。

Min Value:最小值。

Max Value:最大值。

Whole Numbers:是否按整型来改变值。

Value:值

On Value Changed:值改变时,触发的事件

Slider一般可以与文本之类的结合,来解决内容过多显示不下的问题。

等待更新案例...

2.8 Scrollbar



Size:可滑动块块的大小。

Number Of Steps:从最小到最大值一共需要几步。设置0或1时效果和Slider基本一样,都是可以自由滑动。设置2时,滑块只能在最小或者最大,只有这两个位置。再大同理。

2.9 Scroll View





在content下添加所需的内容,即可实现此效果。

Horizontal:是否允许水平拖动

Vertical:是否允许竖直拖动

Inertia:是否有滚动惯性

Deceleration Rate:滚动惯性大小

Visibility:是否选择自动隐藏滚动条

2.10 Dropdown





Options:可以添加或删除每一项

Item:每个项目中的内容组合

Caption---:标题显示的内容

Item---:每个项目的小内容

2.11 InputField





Character Limit:输入字符个数限制

Content Type:输入字符类型

Custom Caret Color:光标颜色

Selection Color:选中文本颜色

2.12 Grid Layout Group



Padding:边距

Spacing:每项的间距

Start Corner:元素排列方向

Start Axis:元素水平或竖直排列

Child Alignment:子项从哪开始排列

Constraint:可以限制列数或行数

2.13 Content Size Fitter



用来设置UI的长宽。

比如可以挂在Text上,就可以设置内容的最小长宽。

3、UGUI事件系统

3.1 UGUI实现事件3种方法

  1. 添加接口,调用事件。(推荐)
  2. 在界面中直接添加Event Trigger控件。
  3. 在代码中添加Event Trigger控件

3.2 IDrag拖动接口

IBeginDragHandler 开始拖动

IDragHandler

IEndDragHandler 结束拖动

实现拖动效果的两种方法

    public void OnDrag(PointerEventData eventData)
{
//eventData.position 拖动时的屏幕坐标
//因为物体的位置是世界坐标,所以要把拖动时的屏幕坐标转换为世界坐标
RectTransform rect = GetComponent<RectTransform>();
Vector3 pos = Vector3.zero;
RectTransformUtility.ScreenPointToWorldPointInRectangle(rect, eventData.position, eventData.enterEventCamera, out pos);
rect.position = pos;
} public void OnDrag(PointerEventData eventData)
{
RectTransform rect = GetComponent<RectTransform>();
rect.anchoredPosition += eventData.delta;
}

3.3 IPointerClick点击接口

IPointerEnterHandler 鼠标进入

IPointerExitHandler 鼠标离开

IPointerDownHandler 鼠标按下

IPointerUpHandler 鼠标抬起

IPointerClickHandler

3.4 ISelectHandler 选中接口

ISelectHandler 点击选中后执行一次

IDeselectHandler 取消选中后执行一次

IUpdateSelectedHandler 选中后一直执行

要配合Selectable控件才能使用

3.5 系统按键接口

IScrollHandler 点击后鼠标滚轮触发

ISubmitHandler 点击后回车空格触发

CancelHandler 点击后Esc触发

IMoveHandler 点击后键盘移动触发

要配合Selectable控件才能使用

Unity---UGUI入门基础---更新中的更多相关文章

  1. 第一章:大数据 の Linux 基础 [更新中]

    本课主题 Linux 休系结构图 Linux 系统启动的顺序 Linux 查看内存和 CPU 指令 环境变量加载顺序 Linux 内存结构 Linux 休系结构图 Linux 大致分为三个层次,第一层 ...

  2. unity -- Time类(持续更新中)

    2018年了,新年总是会制定很多具体目标和计划,不管能否坚持去完成,初衷和决心总是要有的.本年第一篇博客终于开始下笔了,先立一些今年和公司业务无关的的flag: 1.希望每月或两月能看一套蛮牛游戏上的 ...

  3. Unity 2D入门基础教程之僵尸先生

    注:这是根据网上教程完成的. 翻译:http://blog.1vr.cn/?p=1422 原文:http://www.raywenderlich.com/61532/unity-2d-tutorial ...

  4. Linux入门基础之 中

    五.Linux 下获取帮助 没必要记住所有东西 Linux 提供了极为详细的帮助工具及文档,一定要养成查帮助文档的习惯,可以大大减少需要记忆的东西并且提高效率 5.1.HELP 几乎所有命令都可以使用 ...

  5. diango入门(持续更新中)

    学习注意点:理顺项目逻辑,记住重点,项目做好重点注释保留好,以后做项目了能知道这样可以实现,忘了回来查 下载 命令行 pip install django==1.11.26 -i https://py ...

  6. Unity Shader入门基础(一)

    渲染流水线   一.渲染流水线 渲染流水线的工作任务在于由一个三维场景出发.生存(或者说渲染)一张二维图像.换句话说,计算机需要从一系列的顶点数据.纹理等信息出发,把这些信息最终转换成一张人眼可以看到 ...

  7. 【学习笔记】splay入门(更新中)

    声明:本博客所有随笔都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 前言 终于学习了 spaly \(splay\) !听说了很久,因为dalao总 ...

  8. UNITY 2D入门基础教程

    Unity4.3增加了原生的2D开发环境,新建项目时选2D http://blog.1vr.cn/?p=1422

  9. Unity UGUI——UI基础,Canvas

    主题:画布--Canvas 内容:创建Canvas UI控件的绘制顺序 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTXJfQUhhbw==/font/5 ...

随机推荐

  1. Java-API-POI-Excel:SXSSFWorkbook Documentation

    ylbtech-Java-API-POI-Excel:SXSSFWorkbook Documentation 1.返回顶部 1. org.apache.poi.xssf.streaming Class ...

  2. Git学习笔记(四)标签和搭建Git服务

    一.标签是什么 发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一 ...

  3. libstdc++.so.6

    libstdc++.so.6遇到的问题: 1.提示version `GLIBCXX_3.4.14' not found /usr/lib64/libstdc++.so.: version `GLIBC ...

  4. Python中str.format()字典及list传入详解

  5. list array解析(总算清楚一点了)

    # -*- coding: utf-8 -*- """ Created on Tue Aug 09 23:04:51 2016 @author: Administrato ...

  6. Delphi Cookie

    Cookie IdHTTP1.CookieManager.AddCookies(); IdHTTP1.Post(); IdHTTP1.Get('http://1.1.1.1:9000/'); for ...

  7. 部署和调优 1.3 pureftp部署和优化-2

    登录ftp,用远程的一台机器,执行 lftp 如果没有这个命令,需要安装 yum install -y lftp 登录ftp lftp ftpuser1@192.168.1.117 输入口令,即密码 ...

  8. Yii::app()

    Yii::app()返回的是你在index.php里创建的CWebApplication实例. 在一次请求处理过程中,这是个唯一的实例. Yii::app()主要负责一些全局性的功能模块,比如Yii: ...

  9. Ajax入门(一)从0开始到一次成功的GET请求

    什么是服务器 网页浏览过程分析 一个完整的HTTP请求过程,通常有下面7个步骤 建立TCP连接 Web浏览器向Web服务器发送请求命令 Web浏览器发送请求头信息 Web服务器- 应答 Web服务器- ...

  10. TaikrSpaceShooterStartKit.unitypackage包下载地址

    有好多教程里面没有资源包,现在加密分享给大家 unity4.*  链接: https://pan.baidu.com/s/1XMo2zVpV3ZhkNZKOb6H0yw 密码: tqnt unity5 ...