C# 事件机制理解

说明:在利用C#开发项目或者阅读DotNET源码中System.Windows.Forms时会遇到event关键字,刚好最近时间充裕,记录一下

C# 事件系统

关键字 :event,delegate

描述: 我有一个播放各种音效的类, 其中有一个播放声音的方法PlayAudio(),当这个方法被触发时,另一个动画类中的一些方法对这个声音播放有监控,一旦这个PlayAudio()触发,那么自己也播放UI动画。我们可能会这样做:

public class AudioPlayerCon
{

  public void PlayAudio()
  {
    CommentatorAnimator._instance.PlayAnimation();
  }
  
}

public class CommentatorAnimator
{
   public static CommentatorAnimator _instance;
   public void PlayAnimation()
   {

   }
}

没什么问题,能运行
假设现在定义为版本1,版本2增加了5个动画对这个声音播放有兴趣,版本3增加了几个新的音效方法,有10个动画分别感兴趣,后来到了版本10,这里面的结构就会变得杂乱,因此需要学习事件机制。

这里不说委托和事件,网上有大量教程,下面演示源码:

public delegate void AnimHandler(object s, AnimEventArgs e);

public class AudioPlayerCon : MonoBehaviour
{
   public event AnimHandler SlientEvent;
  
   
   public void PlayAudio()
   {
     //
      if (SlientEvent != null)
          SlientEvent(this, new AnimEventArgs(3));      
   }
}

public class AnimEventArgs :EventArgs
{
    private int page;
    public AnimEventArgs(int page)
    {
       this.page = page
    }
}
public class CommentatorAnimator : MonoBehaviour
{ 
  private void Awake()
  {  
     apc = AudioPlayerCon.Instance;
     apc.SpeakEvent += new AnimHandler(PlayAnimation); 
  }
 
  public void PlayAnimation(object s, AnimEventArgs e)
  {
       //播放动画
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值