UGUI Button

UGUI Button,可以说是真正的使用最广泛、功能最全面、几乎涵盖任何模块无所不用无所不能的组件,掌握了它的灵巧使用,你就几乎掌握了大半个UGUI!

 

一、Button组件:

UGUI Button

Interactable(是否可用):勾选,按钮可用,取消勾选,按钮不可用,并进入Disabled状态。

Transition(过渡方式):按钮在状态改变时自身的过渡方式:

Color Tint(颜色改变) 

Sprite Swap(图片切换) 

Animation(执行动画)(后面有详细介绍)

Target Graphic(过渡效果作用目标):可以是任一Graphic对象。

 

UGUI Button

Navigation(按钮导航):假如你现在有四个按钮,当你点击第一个时,第一个会保持选中状态,然后通过按键盘方向键,会导航将选中状态切换到下一个按钮上,例如你的第一个按钮下方存在第二个按钮,当你选中第一个按方向键下时,第一个按钮的选中状态取消,第二个按钮进入选中状态,前提是这些按钮都开启了导航功能。

 

None(关闭):关闭导航。

Automatic(自动导航):自动识别并导航到下一个控件。

Horizontal(水平导航):水平方向导航到下一个控件。

Vertical(垂直导航):垂直方向导航到下一个控件。

Explicit(指定导航):特别指定在按下特定方向键时从此按钮导航到哪一个控件。

 

 

UGUI Button

Color Tint(颜色改变过渡模式):

Normal Color(默认颜色):初始状态的颜色。

Highlighted Color(高亮颜色):选中状态或是鼠标靠近会进入高亮状态。

Pressed Color(按下颜色):鼠标点击或是按钮处于选中状态时按下enter键。

Disabled Color(禁用颜色):禁用时颜色。

Color Multiplier(颜色切换系数):颜色切换速度,越大则颜色在几种状态间变化速度越快。

Fade Duration(衰落延时):颜色变化的延时时间,越大则变化越不明显。

 

UGUI Button

Sprite Swap(图片切换过渡模式):

Highlighted Sprite(高亮图片):选中状态或是鼠标靠近会进入高亮状态。

Pressed Sprite(按下图片):鼠标点击或是按钮处于选中状态时按下enter键。

Disabled Sprite(禁用图片):禁用时图片。

 

UGUI Button

Animation(播放动画过渡模式):

Normal Trigger(默认触发器):默认状态触发。

Highlighted Trigger(高亮触发器):选中状态或是鼠标靠近会进入高亮状态。

Pressed Trigger(按下触发器):鼠标点击或是按钮处于选中状态时按下enter键。

Disabled Trigger(禁用触发器):禁用时触发。

 

UGUI Button

Auto Generate Animatior(自动生成动画控制器):

点击此按钮,会自动生成一个包含了以上四种状态以及四种动画的animatior,然后选中此按钮,ctrl+6进入动画编辑界面,分别对以上四种动画进行调动就可以了。

 

UGUI Button

OnClick():按钮点击事件触发集合。

 

二、使用中的技巧:

 

《功能1:动态为button添加点击事件》

代码如下:

UGUI Button

 

《功能2:动态为button添加其他(可以是点击以外)事件》

代码如下:

UGUI Button

 

Unity UGUI Button 按下,抬起,连续按下,鼠标退出事件响应函数

  1. using UnityEngine;

  2. using UnityEngine.Events;

  3. using UnityEngine.EventSystems;

  4. using System.Collections;

  5.  
  6.  
  7. public class test : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler, IPointerClickHandler

  8. {

  9.     public float interval = 0.1f;

  10.  
  11.  
  12.     [SerializeField]

  13.     UnityEvent m_OnLongpress = new UnityEvent();

  14.     private bool isPointDown = false;

  15.     private float lastInvokeTime;

  16.  
  17.  
  18.     // Update is called once per frame

  19.     void Update()

  20.     {

  21.         if (isPointDown)

  22.         {

  23.             if (Time.time - lastInvokeTime > interval)

  24.             {

  25.                 //触发点击;

  26.                 m_OnLongpress.Invoke();

  27.                 lastInvokeTime = Time.time;

  28.                 Debug.Log("长按");

  29.             }

  30.         }

  31.     }

  32.  
  33.  
  34.     public void OnPointerDown(PointerEventData eventData)

  35.     {

  36.         m_OnLongpress.Invoke();

  37.  
  38.  
  39.         isPointDown = true;

  40.  
  41.  
  42.         lastInvokeTime = Time.time;

  43.         Debug.Log("鼠标按下");

  44.     }

  45.  
  46.  
  47.     public void OnPointerUp(PointerEventData eventData)

  48.     {

  49.         isPointDown = false;

  50.         Debug.Log("鼠标抬起");

  51.     }

  52.  
  53.  
  54.     public void OnPointerExit(PointerEventData eventData)

  55.     {

  56.         isPointDown = false;

  57.         Debug.Log("鼠标退出");

  58.     }

  59.     public void OnPointerClick(PointerEventData eventData)

  60.     {

  61.         isPointDown = false;

  62.         Debug.Log("鼠标点击");

  63.     }

  64. }