事件

事件的定义

  • 事件在使用时,就是在委托变量前加上一个event关键字。
    // 定义一个委托
    public DeadHandler DeadEvent;
    class Player
    {
      // 定义一个事件
      public event DeadHandler DeadEvent;
    }
    

事件的使用

  • 给事件赋值要使用+=
    class Game
    {
      public Player player = new Player();
      public Game()
      {
          // 当player实例的死亡事件发生时会调用OnDead函数
          player.DeadEvent += OnDead;
      }
      public void OnDead()
      {
          Console.WriteLine("你牺牲了。");
      }
    }
    /*
    * 输出:
    * 你牺牲了。
    */
    
  • 可以用+=给事件赋多个值,这样当事件发生时,这些函数都会被调用。
    class Game
    {
      public Player player = new Player();
      public Game()
      {
          // 当player实例的死亡事件发生时会调用OnDead函数
          player.DeadEvent += OnDead;
          player.DeadEvent += SendMessage;
      }
      public void OnDead()
      {
          Console.WriteLine("你牺牲了。");
      }
      public void SendMessage()
      {
          Console.WriteLine("告诉大家一个事:玩家牺牲了。");
      }
    }
    /*
    * 输出:
    * 你牺牲了。
    * 告诉大家一个事:玩家牺牲了。
    */
    

事件的使用步骤

虽然事件的语法比较难,但他的使用总是这么几个固定的步骤。

  1. 定义事件
    // 我们希望有一个死亡事件
    public event DeadHandler DeadEvent;
    
  2. 定义委托
    // 当死亡事件发生时,我们会调用一个函数,委托用于确认这个函数长什么样子。
    public delegate void DeadHandler();
    
  3. 触发事件
    if (HP <= 0)
    {
     // 在玩家死亡时去触发这个事件
     if (DeadEvent  != null) 
         DeadEvent();
    }
    
  4. 监听事件
    player.DeadEvent += SomeFunc; // 当DeadEvent发生时,执行SomeFunc。
    
  5. 处理事件
    // 当DeadEvent发生时,执行SomeFunc。
    void SomeFunc() 
    {
    }
    

results matching ""

    No results matching ""