Unity Delegate Event

//********************************************************************
// 文件名: DelegateTest.cs
// 描述: 玩家
// 作者: 李伟
// 创建时间: 2015-09-16
//
//********************************************************************


using UnityEngine;
using System.Collections;
using System;


public delegate void DoHurt();

/// <summary>
/// 委托事件模式,就是监听者模式的实现。
/// 一句话解释就是:“我对这个感兴趣,你变化的时候通知我一声,我就不实时关注了”。
/// </summary>
public class DelegateTest : MonoBehaviour 
{
    void Start()
    {
        AddDoHurtEvent(myHurt001);
        AddDoHurtEvent(myhurt002);
        AddDoHurtEvent(myhurt003);

        OnDoHurtEvent();

        RemoveDoHurtEvent(myhurt002);

        OnDoHurtEvent();
    }


    /// <summary>
    /// 定义一个DoHurt的事件
    /// </summary>
    private event DoHurt DoHurtEventHanlde;


    /// <summary>
    /// 执行事件
    /// </summary>
    void OnDoHurtEvent()
    {
        if (DoHurtEventHanlde != null) DoHurtEventHanlde();
    }

    /// <summary>
    /// 添加事件
    /// </summary>
    /// <param name="doHurt"></param>
    void AddDoHurtEvent(DoHurt doHurt)
    {
        DoHurtEventHanlde += doHurt;
    }

    /// <summary>
    /// 移除事件
    /// </summary>
    /// <param name="doHurt"></param>
    void RemoveDoHurtEvent(DoHurt doHurt)
    {
        DoHurtEventHanlde -= doHurt;
    }


    public void myHurt001()
    {
        Debug.Log("调用1");
    }


    public void myhurt002()
    {
        Debug.Log("调用2");
    }


    public void myhurt003()
    {
        Debug.Log("调用3");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值