专栏首页Unity TechnologyUnityEvent的使用方法

UnityEvent的使用方法

UnityEvent本质上是继承自UnityEventBase的类,它的AddListener()方法能够注册UnityAction,RemoveListener能够取消注册UnityAction,还有Invoke()方法能够一次性调用所有注册了的UnityAction。UnityEvent也有数个泛型版本(参数最多也是4个),但要注意的一点是,UnityAction的所有带参数的泛型版本都是抽象类(abstract),所以如果要使用的话,需要自己声明一个类继承之,然后再实例化该类才可以使用

unityevent是可以带参数的 首先是无参法使用

using UnityEngine;
using UnityEngine.Events;
public class Unityevent1 : MonoBehaviour
{
    UnityEvent Myevent;
    // Start is called before the first frame update
    void Start()
    {
        if (Myevent == null)
            Myevent = new UnityEvent();
        Myevent.AddListener(Ping);
    }

    private void Update()
    {
        if (Input.anyKeyDown && Myevent != null)
        {
            Myevent.Invoke();
        }
    }

    void Ping()
    {
        Debug.Log("Ping");
    }
}

其次是带有参数的使用方法

using System;
using UnityEngine;
using UnityEngine.Events;

[Serializable]
public class MyIntEvent : UnityEvent<int>//最多可以传4个值
{ 

}

public class unityevent2 : MonoBehaviour
{ 
    public MyIntEvent m_MyEvent;
    // Start is called before the first frame update
    void Start()
    {
        if (m_MyEvent == null)
            m_MyEvent = new MyIntEvent();

        m_MyEvent.AddListener(Ping);
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.anyKeyDown && m_MyEvent != null)
        {
            m_MyEvent.Invoke(5); //调用传参,并传入参数,最多4个参数 
        }
    }

    void Ping(int i)
    {
        Debug.Log("Ping" + i);
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • unity中Lambda表达式

    首先介绍一下lambda表达式得含义: 简化了匿名委托的使用,让你让代码更加简洁,优雅。 lambda运算符:所有的lambda表达式都是用新的lambda...

    LittleU
  • Jtro的技术分享:unity中使用事件与委托加单例

    在unity开发中,如果你频繁的使用bool值判断,代码臃肿繁琐,请立即停止它!有的时候用一些简单的办法就可以得到你以前几百行代码的效果。

    LittleU
  • Jtro的技术分享:ugui做虚拟摇杆

    这里给大家不用easytouch做摇杆的方法,其实做虚拟摇杆还是easytouch简单方便一点,只需要几个步骤和少量的代码就可以了,但是如果在没有easytou...

    LittleU
  • Python GUI编程快速开发图形显示界面,用代码尝试画抽象画

    python编程中, GUI图形界面,是绕不过去的坎,这里先做一个简单的图形绘制~!

    云飞
  • 0470-如何在Redhat7.4安装CDH5.16.1

    Cloudera在2018年11月29日发布了CDH5.16.1,新功能介绍可以参考Fayson之前的文章《0466-CDH5.16.1和CM5.16.1的新功...

    Fayson
  • jupyter notebook参数化运行python方式

    (2019.8.14 19:53)吃饭前用这个方法实战了一下,吃完回来一看好像不太行:跑完一组参数之后,到跑下一组参数时好像没有释放之占用的 GPU,于是 no...

    砸漏
  • win64 安装xgboost python

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

    bear_fish
  • 打印日志的几种方式

    log4j的主配置文件为*.properties,log4j2废弃了这种方式,采用*.xml、json等方式。

    我的小碗汤
  • TensorFlow (2) CIFAR-10 简单图像识别

    本文主要学习获取 CIFAR-10 数据集,通过简单的模型对数据集进行训练和识别。

    coding01
  • 一起学Excel专业开发08:工作表的程序行和程序列

    我们经常会看到一些工作表,含有隐藏的行或列。而这些隐藏行或列中,往往存储着一些不想让用户看到的数据。这些数据可以让Excel或者VBA程序使用,方便完成一些高级...

    fanjy

扫码关注云+社区

领取腾讯云代金券