原型
//Action原型
namespace System
{
public delegate void Action();
public delegate void Action<T1>(T1 arg1);
public delegate void Action<T1, T2>(T1 arg1, T2 arg2);
public delegate void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3);
}
声明、调用
public class BattleFieldManager {
//没有参数的回调
public Action OnInitCallback;
//一个参数的回调
public System.Action<GameObject> TouchCallback1;
//两个参数的回调
public System.Action<GameObject, BodyModel> TouchCallback2;
//三个参数的回调
public System.Action<GameObject, BodyModel, BodyModel> TouchCallback3;
internal void InitBattleField(int playerIndex)
{
OnInitCallback();
TouchCallback1(GameObject);
TouchCallback2(GameObject,BodyModel);
TouchCallback3(GameObject,BodyModel,BodyModel);
}
}
设置委托
private void OnEnable()
{
BattleFieldManager.Instance.OnInitCallback += StartSpwan;//侦听StartSpwan函数
}
void StartSpwan()
{
//开启协程
Coroutine = StartCoroutine(SpwanSolider());
}
备注:OnInitCallback += StartSpwan 这里用到“+=”可以委托多个函数,如果直接写“=”就只能委托一个函数