给UGUI的Button动态添加OnClick监听_onclick.addlistener_unity_http的博客-程序员秘密

技术标签: unity  

下面是我用UGUI的button的onClick.AddListener写的一个添加OnClick的方法

如果有什么不对的地方,多谢大神评论

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;

public class AddDelegateListed : MonoBehaviour {

    public List<Button> btnArray = new List<Button>();
    public Transform[] targets;

 // Use this for initialization
 void Start () {
        //找到该物体的子物体中包含Button组件的gameObject,并添加到btnArray中
        btnArray.AddRange( transform.GetComponentsInChildren<Button>());
        for (int i = 0; i < btnArray.Count; i++)
        {
            //Debug.Log(btnArray[i].name);//检查是否找到button组件
            //int index = i;
            //这里单独定义一个button是为了传递参数,如果不传参数的话可以不用定义的
            //而且传参数不能直接传关于 i 的参数,因为添加delegate的时候OnClick不会被调用,
            //只有点击的时候才会调用,如果传了有关 i 的参数就是最后一个 有关 i 的参数了
            //我试过如果直接传 i 的话,在添加的 delegate 的方法中,打印出来是最后一个 i 的值
 //原因也很简单就是 i 一直是同一个内存地址,每次改变的是 i 的值,所以最后这里只要把 i 改了就传的参也变了
            Button sender = btnArray[i];
            //添加监听的 delegate 参数是一个delegate
            btnArray[i].onClick.AddListener(
                delegate()
                {
                    OnClickAddButton(sender.gameObject);
                });
        }
 }

    private void OnClickAddButton(GameObject index)
    {
        Debug.Log("btnName : " + index.name);
    }
 
 // Update is called once per frame
 void Update () {
 
 }
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/unity_http/article/details/74927361

智能推荐

文件过滤技术_曹世宏的博客的博客-程序员秘密

文件过滤简介定义:文件过滤是一种根据文件类型对文件进行过滤的安全机制。文件过滤功能可以降低机密信息泄露和病毒文件进入公司内部网络的风险,还可以阻止占用带宽和影响员工工作效率的文件传输。目的:机密信息和病毒往往存在于特定的文件类型中,例如机密信息一般保存在文档文件中,病毒信息一般附着在可执行文件中。因此文件过滤通过阻断特定类型文件的传输,可以降低机密信息泄露和内网感染病毒的风险。如果想进...

FastDFS文件数据备份_fastdfs备份_阿祥仔的博客-程序员秘密

需求:(增量备份&amp;amp;&amp;amp;历史数据备份)A服务器中的图片数据,实时同步在B服务器中,备份增量数据的同时,也备份历史数据.传送门: FastDFS安装配置调研fastdfs支持上传数据时,对所有的配置storage相同分组的进行同步(如:group1分组),只需在B服务器中也安装一个fastdfs,并将tracker指向A中的tracker,同时配置storage,通过cl...

python大师_pickle库的使用详解_weixin_39987120的博客-程序员秘密

在“通过简单示例来理解什么是机器学习”这篇文章里提到了pickle库的使用,本文来做进一步的阐述。那么为什么需要序列化和反序列化这一操作呢?便于存储。序列化过程将文本信息转变为二进制数据流。这样就信息就容易存储在硬盘之中,当需要读取文件的时候,从硬盘中读取数据,然后再将其反序列化便可以得到原始的数据。在Python程序运行中得到了一些字符串、列表、字典等数据,想要长久的保存下来,方便以后使用,而不...

被裁员!大龄Android程序员面试惨败辛酸史,技术水平真的很重要!_西安大龄android开发就业_初壹十五a的博客-程序员秘密

**第一次看我文章的小伙伴可以关注一下我,(**顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找 **)https://github.com/xiangjiana/Android-MS更多完整项目下载。未完待续。源码。图文知识后续上传github。可以点击关于我联系我获取每天更新各种技术干货,分享更多最热程序员圈内事。之前面试了一个38岁的程序员,Android的,回来...

C语言中数组定义方式_weixin_33890526的博客-程序员秘密

一、数组简介&lt;1&gt;前言大家首先来思考一个问题,若是我们想要定义两个变量,求这两个数的平均数,该怎么求呢?例如:int a = 10,b = 20int average = (a + b) / 2;上面的公式,我相信大家应该很快就能够求出来。若是,我们想要定义5个变量,求他们的平均值呢?我们是不是要这么写?Int a = 1,b = 2,c = 3,d = 5,e = 5;我相信这样写,...

关于solidworks的威力曲面英文版使终无法调整成中文版的解决办法_威力曲面6.1 汉化包_河湾边的一亩三分地的博客-程序员秘密

最近在学习solidworks过程中了解到了有个插件叫“威力曲面”,做曲面很便捷。但在安装时遇到点小问题,威力曲面使用用不了中文版,最后终于解决,发现网上还没有相关的文章,现在我把过程写一下: 步骤1:下载威力曲面插件包,我的是solidworks2018所地安装箭头1的安装包,箭头2, 你懂的。这里有一点注意,最好使用默认安装路径,安装路径中不要出现中文名称的文档,否则插件...

随便推点

@Valid介绍及相关注解_ExtraMile的博客-程序员秘密

@Valid注解用于校验,所属包为:javax.validation.Valid。 加入maven依赖&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;javax.validation&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;validation-api&amp;lt;/artifactId&amp;gt; &amp;lt;ver...

Eclipse替代ndk-gdb断点调试Android NDK程序_chenjili2011的博客-程序员秘密

一 概述: Eclipse调试NDK程序的操作并不难,难的是环境的搭建。光是安装Eclipse就有不少问题,真是“大错不犯,小过不断”不胜期烦。在网上,已经有先行者记录下了Eclipse断点调试Android NDK程序的方法:《Eclipse + ADT(包括NDK Plugi...

(简单易懂!一看就会!)MySQL高级语句的详细用法_mysql高级子查询语法简答易理解_Jessica丶唯的博客-程序员秘密

文章目录一、按关键字排序1.1 语法结构二、对结果进行分组2.1 语法结构三、限制结果条目3.1 语法结构3.2 环境创造四、AS的用法4.1 设置别名4.2 作为连接语句五、常用通配符的用法5.1 %的用法5.2 _的用法5.3 两者结合使用六、子查询七、查看表的状态八、创建视图(虚拟表)九、结果集十、exists的用法十一、NULL值11.1 给表添加属性11.2 在统计时null值不会进入统计11.3 在统计时空值会进入统计十二、正则表达式十三、运算符13.1 算术运算符13.2 比较运算符十四、比较

STM32 PA6引脚输出低电平不正常的问题_pang9998的博客-程序员秘密

使用环境(蓝色粗体字为特别注意内容)1、软件环境:Keil uv5.152、硬件环境:STM32F103C8T6 最小系统在一个项目中需要用到STM32 的PA6引脚,发现工作异常。由于是自己做的最小系统,所以检查了芯片引脚,并没有发现虚焊、或者跟其他引脚连在一起的情况,初步判断是单片机或者程序的问题,硬件电路应该没有问题,硬件电路如下所示。 手工做的板子,电路还在调试,还没来...

Android RecyclerView 上下/左右 禁止滑动_recyclerview禁止滑动_AaVictory.的博客-程序员秘密

禁止滑动:禁止竖向滑动 和 禁止横向滑动 //禁止滑动 布局管理器 LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this){ //禁止竖向滑动 RecyclerView 为垂直状态(VERTICAL) @Override public boolean canScrollVertically() { .

ARM裸机程序开发——ARM运行模式及寄存器_运行模式和寄存器的关系如何_喜欢哲学的女孩的博客-程序员秘密

现在来总结一下ARM的运行模式以及寄存器★ARM的运行模式类型ARM微处理器有7中运行模式:用户模式(user)、系统模式(system)、一般中断模式(IRQ)、快速中断模式(FIQ)、管理模式(supervisor、svr)、中止模式(abort)、未定义指令中止模式(undefined)◇这七种运行模式分别用于什么情况下?▲用户模式:用户模式是用户程序

推荐文章

热门文章

相关标签