NGUI按钮的介绍

该课时下暂无相关问答

暂无与本课时相关联的问

按钮介绍

按钮是制作UI过程中最核心、最重要的控件之一。在游戏中,按钮是用户操作最依赖的控件,无处不在。
广泛地说,按钮的核心在于接收事件,任何可以接收事件的,都可以称作按钮.
下面的按钮可以说是我们经常见到。

  

按钮的创建

运用NGUI制作一个能够响应用户操作的按钮,需要具备的条件有哪些?
* 1.按钮的外貌—–使用UISprite来呈现。
* 2.用于处理鼠标交互的碰撞器——Collider.
* 3.用于展现按钮的组件-UIButton(此组件并不是必须的)

按钮的属性

按钮的属性基本分三部分
* 按钮交互四种颜色过度控制
* 按钮交互过程中精灵控制
* 按钮常用Click事件调用处理

按钮的交互方式

对于按钮的交互处理,有很多种方式,下面给大家一一做说明。

第一种方式

通过Inspector 面板的On Click组进行制定。
在脚本中定义Public 方法,然后将脚本挂载到某个游戏对象上,并将此对象拖拽到OnClick面板中,从Method险种选择相应类中的方法。

第二种方式

此方法与第1种方法类似,为按钮添加EventTrigger组件,每组事件都和第一种方法中的OnClick一样,然后采用第一种方法,为相应的事件添加方法调用。

  • OnHoverOver
  • OnHoverOut
  • OnPress 鼠标左键按下
  • OnRelease 鼠标左键松开
  • OnSelect
  • OnDeselect
  • OnClick/Tap 鼠标点击或触屏点击
  • OnDouble-Click/Tap 鼠标双击或触屏双击
  • OnDragOver 按下鼠标拖动到按钮上
  • OnDragOut 按下鼠标拖动到按钮外

第三种方式

这种方式是再脚本中编写固定的方法签名,然后将脚本挂在到按钮对象上。

using UnityEngine;
using System.Collections;

public class ButtonDemo : MonoBehaviour {

    void OnDrag(Vector2 delta){
        print("拖动"+delta);
    }
    void OnHover()
    {
        print("鼠标移上");
    }
    void OnClick(){
        print("点击");
    }

    void OnDoubleClick ()	{
        print("鼠标双击");
    }

}

第四种方式

通过定义添加VoidDelegate的形式添加交互操作(仅限处理OnClick事件)

using UnityEngine;
using System.Collections;

public class ButtonDemo : MonoBehaviour {

    void Start () {
        //获取按钮组件
        UIButton btn = this.GetComponent<UIButton>();
        //创建委托
        EventDelegate dele1 = new EventDelegate(onBtnClickA);
        //将委托添加给按钮的Click
        btn.onClick.Add(dele1);
    }

    private void onBtnClickA()
    {
        print("按钮被点击了");
    }
}

     
     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

第五种方式

通过交互对象添加UIEventListener组件方法处理按钮多种相关事件.

using UnityEngine;
using System.Collections;

public class ButtonDemo : MonoBehaviour {
      void Start () {
          //为按钮添加UIEventListener组件,并处理点击事件
          UIEventListener ue = this.gameObject.AddComponent<UIEventListener>();
          //处理点击事件
          ue.onClick = onBtnClickA;
      }

      private void onBtnClickA(GameObject go)
      {
          print("按钮被点击了  onBtnClickA");
      }
    //直接使用简写方式处理
        UIEventListener.Get(this.gameObject).onClick = onBtnClickB;
}

对于Start中的方法,可以采用下面的简写方式。

   UIEventListener.Get(this.gameObject).onClick = onBtnClickA;


UGUI动态创建按钮

   UIEventListener.Get(this.gameObject).onClick = onBtnClickA;
  1. using UnityEngine;  
  2. using System.Collections;  
  3. using UnityEngine.UI;  
  4. /// <summary>  
  5. /// 脚本位置:UGUI的按钮身上  
  6. /// 脚本功能:动态的添加按钮的点击事件  
  7. /// </summary>  
  8. public class ListenerTest : MonoBehaviour {  
  9.   
  10.     private Button button ;  
  11.       
  12.     void Start () {  
  13.     button = GetComponent<Button>();  
  14.   
  15.   
  16.     button.onClick.AddListener(  
  17.     delegate() {  
  18.         TestButtonClick testClick = GameObject.FindObjectOfType<TestButtonClick>();  
  19.         testClick.OnClickButton();  
  20.     }  
  21.     }  
  22.       
  23.   
  24. }  
  1. <pre name="code" class="csharp">using UnityEngine;  
  2. using System.Collections;  
  3. /// <summary>  
  4. /// 脚本位置:摄像机身上  
  5. /// 脚本功能:当点击按钮的时候动态的添加此脚本上的OnClickButton方法  
  6. /// </summary>  
  7. public class TestButtonClick : MonoBehaviour {  
  8.   
  9.     // Use this for initialization  
  10.     void Start () {  
  11.       
  12.     }  
  13.       
  14.     // Update is called once per frame  
  15.     void Update () {  
  16.       
  17.     }  
  18.   
  19.     public void OnClickButton()  
  20.     {  
  21.     Debug.Log("已经成功监听按钮的点击事件");  
  22.     }  
  23. }  
NGUI动态创建按钮
[csharp]  view plain  copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. /// <summary>  
  5. /// 脚本位置:NGUI的Button身上  
  6. /// 脚本功能:监听事件的添加和取消  
  7. /// 创建时间:2015年11月18日  
  8. /// </summary>  
  9.   
  10. public class Listener : MonoBehaviour  
  11. {  
  12.   
  13.     // Use this for initialization  
  14.     void Start ()  
  15.     {  
  16.         //  给Button按钮添加监听事件  
  17.         EventDelegate.Add (GetComponent<UIButton> ().onClick, AddOnClick);  
  18.   
  19.     }  
  20.       
  21.     // Update is called once per frame  
  22.     void Update ()  
  23.     {  
  24.       
  25.     }  
  26.   
  27.     public void AddOnClick ()  
  28.     {  
  29.         Debug.Log ("按钮的监听事件添加成功");  
  30.     }  
  31.   
  32.   
  33.     // 取消NGUI按钮的监听事件  
  34.     public void CancelOnClick ()  
  35.     {  
  36.         EventDelegate.Remove (GetComponent<UIButton> ().onClick, AddOnClick);  
  37.     }  
  38. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值