Action委托是无返回值的委托,可以最多带16个参数
委托使用场景1,调用委托,可以分发多个方法出去。举例:定义多个通知不同人的信息,例如经理,员工,客户。可以针对性的制定不同的通知,调用委托,可以一次性的群发给他们。
委托使用场景2,方法的参数是个方法,例如按钮方法,参数是一个点击事件的方法,可以通过委托实现点击事件的方法。
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//Action委托是无返回值的委托,可以最多带16个参数
//委托使用场景1,调用委托,可以分发多个方法出去。举例:定义多个通知不同人的信息,例如经理,员工,客户。可以针对性的制定不同的通知,调用委托,可以一次性的群发给他们。
//委托使用场景2,方法的参数是个方法,例如按钮方法,参数是一个点击事件的方法,可以通过委托实现点击事件的方法。
public class Demo : MonoBehaviour
{
//无参数无返回值委托
Action sendMessage1;
//带int参数的无返回值委托,参数最多16个
Action<int> sendMessage2;
Action<int> buttonClick;
void Start()
{
sendMessage1 += SendMessageToManager;
sendMessage1 += SendMessageToCustomer;
sendMessage1();
sendMessage2 += SendMessageToManager2;
sendMessage2 += SendMessageToCustomer2;
sendMessage2(5);
//常规写法
CreateButton(buttonClick += myButtonClickMethod);
//简化写法
CreateButton(myButtonClickMethod);
}
public void SendMessageToManager()
{
Debug.Log("给经理发信息");
}
public void SendMessageToCustomer()
{
Debug.Log("给客户发信息");
}
public void SendMessageToManager2(int num)
{
Debug.Log($"给经理发信息数量 = {num}");
}
public void SendMessageToCustomer2(int num)
{
Debug.Log($"给客户发信息数量 = {num}");
}
public void myButtonClickMethod(int num)
{
Debug.Log($"按钮点击事件,模拟点击次数 = {num}");
}
public void CreateButton(Action<int> myButtonClick)
{
myButtonClick(100);
}
}