unity给多个Button添加点击事件

本文介绍了一个Unity中按钮事件处理的实现方法,通过自定义脚本LevelButtonEvent挂载到Button预制体上,实现按钮点击事件的监听和响应。具体包括如何为按钮分配唯一ID,以及如何在按钮被点击时触发特定事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值