unity给多个Button添加点击事件

1.先写一段下面的代码 ,用来挂到按钮的预制体上

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
/// <summary>
/// 此脚本挂到Button的预制体上
/// </summary>
public class LevelButtonEvent : MonoBehaviour {
    //唯一按钮对应的唯一ID
    public int id; 
    private Button btnLevel;
    //获取Button
    public Button BtnLevel
    {
        get { return btnLevel ?? GetComponent<Button>(); }
    }
    //定义一个有int类型参数的事件
    public event Action<int> onLevelButtonOnClick;
	void Start () {
        BtnLevel.onClick.AddListener(ButtonOnclick);
    }
    /// <summary>
    /// 当按钮被点击的时候
    /// </summary>
    public void ButtonOnclick()
    {
        if (onLevelButtonOnClick!=null)
        {
            onLevelButtonOnClick(id);
        }
    }
}

2.在Button预制体被实例化的时候,给ID赋值,同时监听按钮点击事件

    /// <summary>
    /// 生成关卡选择按钮
    /// </summary>
    public void LoadSelectButton( )
    {
        //获取Button预制体
        GameObject LevelIcon = Resources.Load<GameObject>("Icon/Level");
        for (int i =0; i < 10; i++)
        {
            //实例化
            GameObject Btn = Instantiate(LevelIcon);
            //获取Button预制体上脚本(也可以自己Add)
            LevelButtonEvent LevelButtonNum = Btn.GetComponent<LevelButtonEvent>();
            //给Button上的ID赋值
            LevelButtonNum.id = (i + 1);
            //监听
            LevelButtonNum.onLevelButtonOnClick += LevelButtonNum_onLevelButtonOnClick;  
        }        
    }
    
    /// <summary>
    /// 监听的方法
    /// </summary>
    /// <param name="obj"></param>
    private void LevelButtonNum_onLevelButtonOnClick(int obj)
    {
         Debug.Log("点击的关卡数"+obj);
    }
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值