Unity 一文掌握使用AddListener方法为组件事件添加监听器的方法

在Unity中,很多组件都带有事件,比如:

Button组件:onClick()

请添加图片描述

Toggle组件:On Value Changed(Boolean)

Dropdown组件:On Value Changed(Int32)

InputField组件:On Value Changed(String)、On End Edit(String)、On Select(String)等。

Slider组件:On Value Changed(Single)

Scrollbar组件:On Value Changed(Single)

ScrollRect组件:On Value Changed(Vector2)

以上组件的事件,我们都可以通过AddListener方法添加监听器,从而实现事件触发时,执行相应的操作。

使用AddListener方法添加监听器,我们可以使用三种功能方法:

1、使用匿名方法作为事件监听器:

  • 无参的,如:

    private void Start()
    {Button button = gameObject.GetComponent<Button>(); // 使用匿名方法作为事件监听器button.onClick.AddListener(delegate{Debug.Log("Button Clicked!");// 在这里执行按钮点击后的操作});        
    }
    
  • 带参的,如:

    void Start()
    {InputField input = gameObject.GetComponent<InputField>();InputField input = gameObject.GetComponent<InputField>();// 使用匿名方法作为事件监听器input.onValueChanged.AddListener(delegate(string value) { Debug.Log(value); });        
    }
    

2、使用Lambda表达式作为事件监听器

  • 无参的,如:

    void Start()
    {Button button = gameObject.GetComponent<Button>(); button.onClick.AddListener(() => { //在这里执行按钮点击后的操作});        
    }
    
  • 带参的,如:

    void Start()
    {           InputField input = gameObject.GetComponent<InputField>();input.onValueChanged.AddListener(value => {Debug.Log(value);//在这里执行事件响应后的其它操作});input.onValueChanged.AddListener(delegate(string value) { Debug.Log(value); });       }
    

3、使用具体方法:

  • 无参的,如:

    void Start()
    {Button button = gameObject.GetComponent<Button>();button.onClick.AddListener(method);  //监控
    }//定义无参具体方法
    public void method()
    {//在这里执行事件响应后的其它操作
    }
    
  • 带参的,如:

    void Start()
    {InputField input = gameObject.GetComponent<InputField>();input.onValueChanged.AddListener(method);  //监控  
    }//定义有参具体方法
    public void method(string value)
    {Debug.Log(value);//在这里执行事件响应后的其它操作
    }
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/603754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CCC数字钥匙设计【NFC】--NFC通信之APDU TLV

CCC3.0&#xff0c;包含NFC、BLE、UWB技术。当采用NFC通信时&#xff0c;车端与手机端是通过APDU来进行交互的。而在APDU中的data数据段&#xff0c;又可能会嵌入TLV协议的数据&#xff0c;以完成车端与手机端的通信交互。 本文先介绍APDU及TLV的一些基础知识&#xff0c;再通…

断更后的故事1

文章目录 技术男为何开始写感悟博客&#xff1f;简单的自我介绍为什么断更了默默进化的日子琐碎的事情对阶段1的思索和总结 技术男为何开始写感悟博客&#xff1f; 其实我是一个偏感性的一个技术男&#xff0c;可能这样就有点违背技术男这个定义了&#xff0c;很多时候还是挺理…

全连接网络、卷积神经网络、递归神经网络 通俗的解释

全连接网络、卷积神经网络和递归神经网络是三种不同类型的神经网络&#xff0c;它们在结构和应用上有所不同。下面我将尽量用通俗易懂的语言来解释和对比这三种神经网络。 1.全连接网络 全连接网络是一种最常见的神经网络类型&#xff0c;它的每一层都由许多神经元组成&#…

SSH 密钥身份验证和管理

安全外壳协议&#xff08;Security Shell Protocol&#xff09;是一种应用于计算机网络的安全通信协议&#xff0c;其提供的服务可用于保护网络上的连接和数据传输安全性&#xff0c;其核心思想是为网络上的两台计算机之间搭建一个安全的外壳&#xff0c;以保护数据传输的安全性…

简单介绍Java 的内存泄漏

java最明显的一个优势就是它的内存管理机制。你只需简单创建对象&#xff0c;java的垃圾回收机制负责分配和释放内存。然而情况并不像想像的那么简单&#xff0c;因为在Java应用中经常发生内存泄漏。 本教程演示了什么是内存泄漏&#xff0c;为什么会发生内存泄漏以及如何预防…

2、C语言:控制流

控制流 语句&#xff1a;在表达式后面加上分号&#xff0c;构成语句。 程序块&#xff1a;用一对花括号“{”与“}”把一组声明和语句括在一起就构成了一个复合语句。复合语句在语法上等同于单条语句。 if-else语句else-if语句&#xff1a;从上到下依次执行&#xff0c;等同于…

视频云存储/视频智能分析平台EasyCVR在麒麟系统中无法启动该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

【docker】网络模式管理

目录 一、Docker网络实现原理 二、Docker的网络模式 1、host模式 1.1 host模式原理 1.2 host模式实操 2、Container模式 2.2 container模式实操 3、none模式 4、bridger模式 4.1 bridge模式的原理 4.2 bridge实操 5、overlay模式 6、自定义网络模式 6.1 为什么需要…

017、使用包、单元包及模块来管理日渐复杂的项目

在编写较为复杂的项目时&#xff0c;合理地对代码进行组织与管理很重要&#xff0c;因为我们不太可能记住代码中所有的细枝末节。只有按照不同的特性来组织或分割相关功能的代码&#xff0c;我们才能够清晰地找到实现指定功能的代码片段&#xff0c;或确定哪些地方需要修改。 到…

【UML】第14篇 协作图

目录 一、协作图的概述 二、协作图的主要构成 2.1 对象 2.2 消息 2.3 链 三、协作图如何画 3.1 思路 3.2 步骤 这个系列暂停了好几天了&#xff0c;适当时候再恢复一下。 UML非常经典&#xff0c;只要在这个行业&#xff0c;代码可能不会写一辈子&#xff0c;但是图肯定…

Java socket编程学习笔记

一、初步了解 1、简易代码(存在socket提前关闭问题) 服务端代码: import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.nio.charset.StandardCharsets;public class MySocketServer {public static void main(String[] args) throws IOEx…

js判断是否为数字的方法

找到一个比较好用的方法&#xff0c;记录下来&#xff0c;方便以后使用查找 function isNumber(value) {return !isNaN(parseFloat(value)) && isFinite(value); }目前测试情况&#xff1a; isNumber(123) —> true isNumber(12.3) —> true isNumber(-12.3) —…

阿里2面:万亿级消息,如何做存储设计?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如阿里、滴滴、极兔、有赞、shein 希音、百度、网易的面试资格&#xff0c;小伙伴在面阿里时&#xff0c;遇到了一个存储设计相关的面试题&#xff1a; 存储架构&#xff0c;…

Ubuntu 虚拟机挂接 Windows 目录

Windows 共享目录 首先 Windows 下共享目录 我这里偷懒直接直接 Everyone &#xff0c;也可以指定用户啥的 Ubuntu 挂接 挂接命令&#xff0c;类似如下&#xff1a; sudo mount -o usernamefananchong,passwordxxxx,uid1000,gid1000,file_mode0644,dir_mode0755,dynperm //…

leetcode09-机器人能否返回原点

题目链接&#xff1a; https://leetcode.cn/problems/robot-return-to-origin/?envTypestudy-plan-v2&envIdprogramming-skills 思路&#xff1a; 循环遍历&#xff0c;模拟即可 代码&#xff1a; class Solution {public boolean judgeCircle(String moves) {int n m…

5.云原生安全之kubesphere应用网关配置域名TLS证书

文章目录 cloudflare配置使用cloudflare托管域名获取cloudflare API Token在cloudflare中配置SSL/TLS kubesphere使用cert-manager申请cloudflare证书安装证书管理器创建Secret资源创建cluster-issuer.yaml创建cert.yaml申请证书已经查看申请状态 部署harbor并配置ingress使用证…

C++中的面向对象重点总结

面向对象的三大特性 封装 封装是将数据和操作这些数据的函数&#xff08;方法&#xff09;组合在一个类中的过程。 封装的主要目的是隐藏类的内部实现细节&#xff0c;仅暴露必要的接口给外部&#xff0c;通过控制类成员的访问级别&#xff0c;可以限制对类内部数据的直接访…

【面试】Redis基础知识

题目 为什么Redis是单线程却性能很高&#xff1f; Redis是一个高性能的基于内存的键值存储系统。它之所以能够达到高性能&#xff0c;主要有以下几个原因&#xff1a; 基于内存&#xff1a;Redis将数据存储在内存中&#xff0c;而不是硬盘上&#xff0c;这使得数据的读写速度…

回首2023,期待2024!

2023&#xff0c;在改变中到来 2023年1月1日&#xff0c;我从成都冷清的学校回到了哈尔滨的老家&#xff0c;开始了保研之前的最后一个寒假 当时的目标是将之前的科研理论转化为实际&#xff0c;生产出一篇sci&#xff0c;助力保研加分 星移斗转&#xff0c;事与愿违&#x…

编译ZLMediaKit(win10+msvc2019_x64)

前言 因工作需要&#xff0c;需要ZLMediaKit&#xff0c;为方便抓包分析&#xff0c;最好在windows系统上测试&#xff0c;但使用自己编译的第三方库一直出问题&#xff0c;无法编译通过。本文档记录下win10上的编译过程&#xff0c;供有需要的小伙伴使用 一、需要安装的软件…