Unity 添加Click事件的几种方法总结

所有的点击事件的生效其实都是实现了接口:IPointerClickHandler 里的 OnPointClick
先看看源码:
接口:
在这里插入图片描述
Button:
在这里插入图片描述
所以其实要实现点击事件,就是要实现接口。

总结了以下方法实现点击事件:

Button(指组件)添加点击事件:
1.Button组件仔细看看他的各个参数发现一个On Click()/鼠标单击()
在这里插入图片描述
下面有3个选择的东西
1.运行生效时间(大概),三个选项 不生效,编译时和运行时,运行时。
2.对象,该对象可以选择场景内和资源里面的对象。(如果直接是脚本,我还没搞清楚,暂留疑问,后面再填,欢迎大佬补充)
3.No function 位置 就是选择需要执行的方法。

操作步骤:

1.写一个脚本,脚本里面写一个你需要点击后执行的方法。

public void ListClick()
{
    Debug.Log("Button绑定function的点击事件!");
}

2.随便挂在一个物体上,我挂在场景里面的一个空物体(名为test)。
在这里插入图片描述

3.选择对象
先选中你脚本所挂的对象
在这里插入图片描述
选要执行的方法
在这里插入图片描述
然后点击就会执行ListClick()的方法。
如果有疑问,为什么可以这样实现操作呢?
我大概解释一下我的理解:
Button组件是官方的一个组件,而组件能够如此操作是用了委托的方式来实现。
如果不了解委托或者Unity委托事件,可以自行baidu学习。

Button添加listener实现点击事件
给需要点击事件的对象挂上下面的脚本,前提是物体要有button组件!!!!:

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

public class ListenerClick : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        GetComponent<Button>().onClick.AddListener(ButtonClick);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    void ButtonClick()
    {
        Debug.Log("Listener 的方法!");
    }
}

此处其实跟上面的方法是一样的,也是用了委托。AddListener(function)说的直白一点,就是用了函数指针。用我的话翻译一下:
obj.GetComponent().onClick.AddListener(ButtonClick);
大概意思就是:给obj的button组件的onClick里面添加一个方法,点击生效。
但如果不是Button,又不想添加Button组件呢?
实现接口IPointerClickHandler-OnPointClick(不一定是click,也肯能是up,down啥的)
在这里插入图片描述
此处我用Image实现的点击事件。
添加了个脚本实现了OnPointClick接口:

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

public class InterFaceClick : MonoBehaviour,IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log("接口实现的点击事件");
        //throw new System.NotImplementedException();
    }

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

(实际上发现实现接口,不用命名空间UnityEngine.UI,只用using UnityEngine.EventSystems就行了)
然后保存就完成啦。
切记切记切记!!!!!
UGUI 的点击等事件,其实都是由射线完成的,所以如果你的对象要想有点击响应,那么一定要勾选 光影投射目标/RaycastTarget!!!!

  • 13
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Unity中,实现点击事件有多种方法。一种常见的方法是通过实现接口来处理点击事件。这个接口叫做IPointerClickHandler,其中有一个方法OnPointerClick。通过实现这个接口并在其中编写处理点击事件的代码,就可以实现点击事件的效果。 另一种方法是使用AddListener函数。这个函数可以将一个方法添加到对象的点击事件中。如果对象是Button类型,可以直接使用GetComponent().onClick.AddListener()来添加点击事件。如果对象不是Button类型,可以通过实现IPointerClickHandler接口的OnPointerClick方法来实现点击事件。 举个例子,如果我们想给一个Image对象添加点击事件,可以创建一个新的脚本,并在其中实现IPointerClickHandler接口的OnPointerClick方法。在这个方法中编写处理点击事件的代码。然后将这个脚本挂载到Image对象上,就可以实现点击事件了。 另外,如果你想给一个Button对象添加点击事件,可以创建一个新的脚本,并在Start方法中使用GetComponent().onClick.AddListener()来添加点击事件的处理方法。在这个方法中编写处理点击事件的代码。然后将这个脚本挂载到Button对象上,就可以实现点击事件了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Unity 添加Click事件几种方法总结](https://blog.csdn.net/weixin_43381316/article/details/105808915)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值