using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
//无参委托函数
public delegate void CallBack_zero();
//单参委托函数 可自定义参数类型
public delegate void CallBack_one(int number);
//多参委托函数 可自定义参数类型
public delegate void CallBack_two(int number,string name,GameObject demo);
public class Test : MonoBehaviour
{
private void Start()
{
//无引用
Demo_show();
Demo_show_one();
Demo_show_two();
Demo_show_three();
//有引用,待函数执行完后,执行回调函数|切记:在执行回调函数时,母函数所在脚本不能失活
Demo_show(One);
Demo_show_one(Two);
Demo_show_two(Three);
Demo_show_three(Four);
}
#region 回调函数引用处
/// <summary>
/// 系统自带Action<T> T可为任意参数 引用 System 即可,可不引用
/// </summary>
/// <param name="call_back"></param>
public void Demo_show(Action<GameObject> call_back=null)
{
//执行
call_back(gameObject);
}
/// <summary>
/// 自建回调函数 CallBack_zero 属于无参回调函数 ,可不引用
/// </summary>
/// <param name="call_cake"></param>
public void Demo_show_one(CallBack_zero call_bake = null)
{
//执行
call_bake?.Invoke();
}
/// <summary>
/// 自建回调函数 CallBack_one 属于单参回调函数,可不引用
/// </summary>
/// <param name="call_cake"></param>
public void Demo_show_two(CallBack_one call_bake = null)
{
//执行
call_bake(1);
}
/// <summary>
/// 自建回调函数 CallBack_two 属于多参回调函数,可不引用
/// </summary>
/// <param name="call_bake"></param>
public void Demo_show_three(CallBack_two call_bake = null)
{
//执行
call_bake(1,"null",gameObject);
}
#endregion
#region 回调函数 show
//带参 gameobject
public void One(GameObject deme)
{
//待执行
}
//无参
public void Two()
{
//待执行
}
//单参为 int
public void Three(int number)
{
//待执行
}
//多参 int 、string、GameObject
public void Four(int number, string name, GameObject demo)
{
//待执行
}
#endregion
}