【unity】【Code】【Event事件】通用代码库(三)——Unity事件与委托

通用代码库
基于Unity 5.6.0f

使用SendMessage不仅效率低下,还容易因为string出错。
所以当需要传递多消息时,最好使用unity里的event系统。

例子如下:

事件发送部分
EventDispatcher.cs

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

public class EventDispatcher : MonoBehaviour
{


    /// <summary>
    /// Event——ImgActive
    /// </summary>

    //关键字delegate,声明委托方法<方法名>([参数])
    public delegate void SetImgActive(bool a);               

    //声明事件SetImgActive方法setActiveTrue
    public event SetImgActive setActiveTrue; 

    public void Begin()//调用begin方法触发事件
    {
        if (setActiveTrue != null)
        {
            setActiveTrue(true);//方法传递参数 true

        }
    }


    public event SetImgActive setActiveFalse;
    public void End()
    {
        if (setActiveFalse != null)
        {
            setActiveFalse(false);
        }
    }

}

事件监听部分
EventListening.cs

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

public class EventListening : MonoBehaviour
{
    public EventDispatcher evt;
    public GameObject img;

    private void OnEnable()
    {
        evt.setActiveTrue += DosetActiveTrue;//+=重载创建
        evt.setActiveFalse += DosetActiveFalse;
    }

    private void OnDisable()
    {
        evt.setActiveTrue -= DosetActiveTrue;//-=
        evt.setActiveFalse -= DosetActiveFalse;
    }

    public void DosetActiveTrue(bool a)
    {
        img.SetActive(a);//do something
    }

    public void DosetActiveFalse(bool b)
    {
        img.SetActive(b);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值