当前位置: 首页 > news >正文

多播委托

多播委托

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace TestConsoleFramwork
{class Player {public delegate void OnAttackDelegate(int JianShaoBloodNumber);public  OnAttackDelegate OnAttack=null;//点击按钮释放AOE攻击后,调用敌人的被伤害方法//AOE是一种攻击public void  DoAOE(int JianShaoBloodNumber) { if (OnAttack!=null){//攻击参数为10滴血
                OnAttack(JianShaoBloodNumber);}}}class Enemy {private int bloodNumber = 100;//减少血量的方法(减少的血量)public void JianShaoBlood(int JianShaoBloodNumber) { bloodNumber-=JianShaoBloodNumber;Console.WriteLine("中招了,Enemy减血"+ JianShaoBloodNumber);Console.ReadLine();}}internal class DuoBoWeiTuo{static void Main(string[] args){Enemy enemy0 = new Enemy();Enemy enemy1 = new Enemy();Enemy enemy2 = new Enemy();Player player = new Player();player.OnAttack += enemy0.JianShaoBlood;player.OnAttack += enemy1.JianShaoBlood;player.OnAttack += enemy2.JianShaoBlood;//DoAOE()执行对敌人减血10滴player.DoAOE(10);}}
}
//调用过程记录:
//1.玩家点击释放大招AOE攻击,后调用对应的玩家的DoAOE(减血数量)方法
//2.DoAOE()方法执行委托方法
//3.在此之前委托指针OnAttack()已经配置为敌人的减血方法
//4.这个例子中的回调就是敌人减血方法
//5.而委托方法本身起什么名字都可以