UGUI:Unity官方最新,与NGUI同源
UI:User Interface(用户的操作界面),图片+文字

UGUI的组件:
1、创建UGUI组件时,会默认创建Canvas(画布)和EventSystem(时间系统)
2、所有UGUI组件必须放在Canvas下才能显示

Image组件(显示图片)
Source Image(源图片):只支持Sprite精灵类型
Color(颜色):原有基础上叠加
Materials(材质):做溶解的效果
Raycast Target:是否接受UGUI事件系统的射线检测,
----图片有按钮有交互,需要勾选
----图片没有交互效果,或没遮挡有交互效果的UI,不需要勾选,UI优化
Image Type:Simple(单一的) Tiled(平铺) Filled(填充) Sliced(切片)
----Simple(单一的)
--------Preserve Aspect:图片是否在显示框内原比例显示
----Tiled(平铺)
--------注意1:平铺模式的图片Wrap Mode要使用Repeat模式
--------注意2:平铺模式的图片如果Border的情况,平铺的是中间的切割出来的部分。
----Filld(填充)
--------Fill Method:填充模式:水平(血条),垂直,90,180,360(技能CD)
--------Fill Origin:填充起点
--------Fill Amount:填充的值,0没有,1全部显示
--------Clockwise:顺逆时针
--------Preserve Aspect:图片是否在显示框内原比例显示
--------Set Native Size:图片显示原尺寸
Image只支持Sprite精灵类型的图片

Preserve Aspect:图片是否在显示框内原比例显示
勾选:原比例显示在显示框内

不勾选:拉伸至整个显示框

图片模式:平铺报错,要把精灵图片改成重复
循环模式:重复,限值,镜像,单次镜像

Sliced(切片):优化图片的尺寸

Fill Center:是否填充中心部分

代码操作
注意:要对UGUI的组件进行脚本操作,需要引用命名空间
1、using UnityEngine.UI
2、public UnityEngine.UI.Image image(引用其他命名空间下的类,也可以用这种方式)
Image的API:
替换图片:
image.sprite = sprite;//替换图片,原图片改变擦除
image.overrideSprite = sprite;//在原图片不变的基础上,相当于覆盖一层图片
当sprite = null时,如果overrideSprite有图,显示override的图片,如果没有显示白图。
当overrideSprite = null时,显示sprite的图片
颜色:image.color = Color.red
射线:image.raycastTarget
填充值:image.fillAmount = count;//可以模拟进度条
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class UGUI_Image : MonoBehaviour {
  6. //public UnityEngine.UI.Image image;//另一种引用形式
  7. private Image image;
  8. private Sprite sp;
  9. private Sprite sp1;
  10. private float count = ;
  11. private void Awake()
  12. {
  13. image = GetComponent<Image>();
  14. //这种形式加载不到Sprite类型的图片
  15. //错误加载方法:sp = Resources.Load("Texture/名字") as Sprite;
  16. //需要使用泛型的方法去加载Sprite的图片
  17. sp = Resources.Load<Sprite>("Texture/名字");
  18. //Sprite多图模式的加载,加载Spirite方式:数据结构(字典)来做管理(略)
  19. //加载多图形式下的所有的sprite,返回的是一个数组。
  20. Sprite[] sp_arr = Resources.LoadAll<Sprite>("Texture/data.dat 00003");//按名字索引图片
  21. string strName = "data.dat 00003_17";
  22.  
  23. foreach (var item in sp_arr)
  24. {
  25. //Debug.Log(item.name);
  26. if (item.name == strName)
  27. {
  28. sp = item;
  29. }
  30. }
  31. //sp = sp_arr[18];
  32. }
  33. // Use this for initialization
  34. void Start () {
  35. //在原有图片上覆盖一张图片
  36. //image.overrideSprite = sp;
  37. //改变源图片
  38. //image.sprite = sp;
  39. //image.overrideSprite = sp1;
  40. image.color = Color.red;
  41. //在填充模式下改变填充值
  42. //image.fillAmount = 0.5f;//fillMethod,枚举类型;fillOrigin,int类型,也代表枚举
  43. }
  44.  
  45. // Update is called once per frame
  46. void Update () {
  47. if (Input.GetKeyDown(KeyCode.P))
  48. {
  49. image.sprite = sp;
  50. //image.overrideSprite = null;
  51. }
  52. //count += Time.deltaTime;
  53. //image.fillAmount = count;
  54. }
  55. }
 
多图模式下,也可以使用切片

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class ClickChangeImage : MonoBehaviour {
  6. public Image image;
  7. public Text text;
  8. public string str;//替换的文字内容
  9. public string spriteName;
  10. private Sprite sp;
  11. private Button button;
  12. // Use this for initialization
  13. void Awake () {
  14. button = GetComponent<Button>();
  15. button.onClick.AddListener(ClickButton);
  16. }
  17. void ClickButton()
  18. {
  19. text.text = str;
  20. if (sp == null)
  21. {
  22. sp = Resources.Load<Sprite>("Tex/" + spriteName);
  23. }
  24. image.sprite = sp;
  25. }
  26. }

Raw image(图片)
Texture:任意的图片类型都可以
UV Rect:
----x,y:代表图片在显示框内的偏移,x为正:图片向左偏,y为正,图片向下偏
----w,h:图片在显示框内的显示比例,W为1:图片横向正常显示,为0.5时:整个显示框只能显示图片的横向的一半,为2时:显示框能显示图片横向的2个。H纵向同理
x,y作用:飞机大战-背景移动
Wrap Mode - repeat循环,否则只能拿图片最边缘的像素来填充空余部分
Wrap Mode - mirror镜像循环偏移
wh作用:拼图游戏-美术切图
代码操作
Texture类型的图片可以这么加载
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class UGUI_RawImage : MonoBehaviour {
  6. public RawImage image;
  7. private Texture tex;
  8. // Use this for initialization
  9. void Start () {
  10. //对于Texture类型的图片使用以下两种方式都是可以加载成功的
  11. //tex = Resources.Load("Texture/XM2") as Texture;
  12. tex = Resources.Load<Texture>("Texture/XM2");
  13. //改变RawImage的图片
  14. image.texture = tex;
  15. //设置图片在显示框的偏移和大小比例
  16. //image.uvRect = new Rect(x,y,w,h);
  17. }
  18.  
  19. // Update is called once per frame
  20. void Update () {
  21.  
  22. }
  23. }

 
Text组件(显示文字)
Text:文本的内容
Character特征:
----Font(字体):
----Font Style(字体样式):加粗,倾斜,加粗且倾斜,正常
----Font Size(字体大小):注意字体大小要适应你的文本框,否则可能出现不显示情况
----Line Spacing行间距:0两行重合,1空一点,2空一行
----Rich Text富文本:是否支持富文本
段落:
----Aligment(对齐方式):
----Align By Geometry(视觉几何对齐):段落中心对齐的修正,有视觉上的差异
----Horizontal Overflow(水平溢出方式):溢出,换行,文本框空间不够,不会换行会溢出
----Vertical Overflow(垂直溢出方式):截断,溢出
----Best Fit(字体大小自适应):文本框空间不够,字体自动变小,最小尺寸和最大尺寸。在文本框内,文本内容全部显示如果能用最大值,字体的大小就是最大值的大小。字体大小不能超过最小值。
富文本:能改变局部指定的文本的样式(大小,颜色,字体样式)
----颜色:<color=red>文本内容</color> 或 <color=#ffffff>文本内容</color>
----大小:<size=40>文本内容</size>
----加粗:<b>文本内容</b>
----倾斜:<i>文本内容</i>、
----写法是支持嵌套模式的。

RGB面板取值范围0~255
RGB代码取值范围0~1
十六进制色值

代码操作

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class UGUI_Text : MonoBehaviour {
  6. public Text text;
  7. // Use this for initialization
  8. void Start () {
  9. text.text = "小明老师又吃<b><color=red>腰子</color></b>!";
  10. //代码里的RGB的取值范围是0-1, 色板上的是 0 - 255
  11. text.color = new Color( / 255f, , / 255f);//230 0 255
  12. text.fontSize = ;
  13. }
  14.  
  15. // Update is called once per frame
  16. void Update () {
  17.  
  18. }
  19. }

Button组件(按钮):复合组件:包含文本子物体,图片组件,按钮组件
Interactable(交互):是否可以交互
Transition(过渡方式):无,颜色,图片,动画
颜色过渡:
----Target Graphic(目标颜色):image继承Graphic类,指定过度的图形,不一定是button本身,指定谁过渡谁
----Normal Color(正常颜色):正常情况下的颜色
----Highlighted Color(悬停颜色):进入按钮或者选中状态下的颜色
----Pressed Color(点击颜色):按下时的颜色
----Disabled Color(失活颜色):交互失活状态的颜色
----Color Multiplier(颜色系数):图像最终呈现的颜色 = 颜色系数 * 面板的选择的颜色,RGB.R * 系数(值小于等于255)
----Fade Duration(渐变时间):
图片过渡:
----Target Graphic:指定过度的图像
----Highlighted Sprite :进入按钮或者选中状态下的显示的图片
同颜色一样。
动画过渡:依赖于动画状态机
----每个Normal等状态的Trigger都对应了动画状态机里的触发条件
----每个状态播放不同的动画。
Navigation(按钮导航):假如有两个按钮,同时开启了导航,那么当鼠标选中一个按钮时,可以通过方向键来改变选中的按钮。

代码操作
引用按钮组件
1、外部拖拽:必须公共
2、代码注册:作用域无限制
ClickButton方法:
1、必须是公共方法,
2、只能有一个参数(固定参数),string,bool,gameObject
3、方法可以重载
OnClick:当点击按钮的执行的方法组
1、拖拽的方式:方法必须的是公共的,方法可以有参数(参数个数只有一个)
2、代码注册事件的形式:方法必须符合AddListener里参数委托,必须是无返回值无参的!

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class UGUI_Button : MonoBehaviour {
  6. public Button button;
  7. //1.先声明一个委托类型, 无返回值,无参数的
  8. public delegate void Del();
  9. //2.声明一个委托变量
  10. public Del del;
  11. // Use this for initialization
  12. void Start () {
  13. //3.添加方法进委托, 只有无返回值无参数的方法才能添加到del的委托变量里
  14. del += TestDel;
  15. //4.委托的调用跟方法一样的,调用之前一定要做判null处理
  16. if (null != del)
  17. {
  18. del();
  19. }
  20. //把一个方法作为参数传递到了另一个方法的内部
  21. Test(TestDel);
  22. //使用代码添加按钮执行事件
  23. button.onClick.AddListener(AddClickButton);
  24. //删除事件
  25. //button.onClick.RemoveListener(AddClickButton);
  26. //使用Invoke方法去执行了一次OnClick里存储的所有的方法
  27. button.onClick.Invoke();
  28. }
  29. // Update is called once per frame
  30. void Update () {
  31.  
  32. }
  33. //委托类型作为参数
  34. void Test(Del de)
  35. {
  36. if (de != null)
  37. {
  38. de();
  39. }
  40. }
  41. void TestDel()
  42. {
  43. Debug.Log("TestDel");
  44. }
  45. public void ClickButton(GameObject str1)
  46. {
  47. Debug.Log("你点击了按钮!" + str1);
  48. }
  49. public void ClickButton(string str)
  50. {
  51. Debug.Log("你点击了按钮!" + str);
  52. }
  53. public void ClickButton()
  54. {
  55. Debug.Log("你点击了按钮!");
  56. }
  57. void AddClickButton()
  58. {
  59. Debug.Log("脚本添加的方法");
  60. }
  61. }

Unity 按钮(Button)的禁用和禁用与变灰

  1. //禁用
  2. this.GetComponent<Button>().enabled= false;
  3. //禁用与变灰
  4. this.GetComponent<Button>().interactable = false;

Unity3D学习笔记(十九):UGUI、Image、Text、Button的更多相关文章

  1. python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法

    python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...

  2. (C/C++学习笔记) 十九. 模板

    十九. 模板 ● 模板的基本概念 模板(template) 函数模板:可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计. 语法: template <<模 ...

  3. JavaScript权威设计--跨域,XMLHttpRequest(简要学习笔记十九)

    1.跨域指的是什么? URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a. ...

  4. python 学习笔记十九 django深入学习四 cookie,session

    缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...

  5. SharpGL学习笔记(十九) 摄像机漫游

    所谓的摄像机漫游,就是可以在场景中来回走动. 现实中,我们通过眼睛观察东西,身体移动带动眼睛移动观察身边的事物,这也是在漫游. 在OpenGL中我们使用函数LookAt()来操作摄像机在三维场景中进行 ...

  6. Java基础学习笔记十九 IO

    File IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再 ...

  7. Java基础学习笔记十九 File

    IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据 ...

  8. JSTL 标签库 使用(web基础学习笔记十九)

    标签库概要: 一.C标签库介绍 1.1.<c:> 核心标签库  JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:1.表达式控制标签:out.set.remove.catch2 ...

  9. angular学习笔记(十九)-指令修改dom

    本篇主要介绍angular使用指令修改DOM: 使用angular指令可以自己扩展html语法,还可以做很多自定义的事情.在后面会专门讲解这一块的知识,这一篇只是起到了解入门的作用. 与控制器,过滤器 ...

  10. yii2源码学习笔记(十九)

    view剩余代码 /** * @return string|boolean the view file currently being rendered. False if no view file ...

随机推荐

  1. 用lua扩展你的Nginx(整理)

    首先得声明.这不是我的原创,是在网上搜索到的一篇文章,原著是谁也搞不清楚了.按风格应该是属于章亦春的文章. 整理花了不少时间,所以就暂写成原创吧. 一. 概述 Nginx是一个高性能.支持高并发的,轻 ...

  2. Centos上把新安装的程序添加到系统环境变量的两种方法

    1.软链接 通过命令查看当前系统的环境变量信息,然后软连接形式把程序的地址连接到已经在环境变量中的目录中 echo "$PATH" > /root/tmp 结果如下: /us ...

  3. Apache+php+mysql环境配置

    Apache+PHP+MySQL环境搭建 标题格式 正文格式 阶段性完成格式 正文中强调格式 ————————————————————————————— 前语:本文是从我写过的doc文档迁移过来的,由 ...

  4. Python: ord()函数

    ch() , unichr() , ord() ①chr()函数用一个范围在range(256)内的整数作参数,返回一个对应的字符. >>>chr(65) 'A' ②unichr() ...

  5. mysql系统变量查询

    mysql系统变量包括全局变量(global)和会话变量(session),global变量对所有session生效,session变量包括global变量.mysql调优必然会涉及这些系统变量的调整 ...

  6. Java设计模式应用——组合模式

    组合模式实际上是一种树形数据结构.以windows目录系统举例,怎么样用java语言描述一个文件夹? 定义一个文件夹类,文件夹类中包含若干个子文件类和若干个文件类. 进一步抽象,把文件夹和文件都看做节 ...

  7. Java一元操作符++详解

    废话不多说,直接上代码. package com.coshaho.learn; /** * * OperatorLearn.java Create on 2016-11-13 下午8:38:15 * ...

  8. Linux服务器---安装Tomcat

    安装Tomcat Tomcat作为web服务器实现了对servlet和jsp的支持,centos目前不支持yum方式安装.在使用Tomcat之前,确保你已经安装并配置好了jdk,而且jdk的版本要和t ...

  9. C++:struct和union 内存字节对齐问题

    转自:http://blog.csdn.net/wangyanguiyiyang/article/details/53312049 struct内存对齐问题 1:数据成员对齐规则:结构(struct) ...

  10. Python入门之Python的单例模式和元类

    一.单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在. 当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上 ...