Unity-Func委托2种常用使用场景

Func委托是有返回值的委托,Func有多个参数时,最后一个参数代表返回值,其他的代表形参

委托使用场景1,调用委托,可以分发多个方法出去。举例:定义多个通知不同人的信息,例如经理,员工,客户。可以针对性的制定不同的通知,调用委托,可以一次性的群发给他们。

委托使用场景2,方法的参数是个方法,例如按钮方法,参数是一个点击事件的方法,可以通过委托实现点击事件的方法。

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//Func委托是有返回值的委托,Func有多个参数时,最后一个参数代表返回值,其他的代表形参
//委托使用场景1,调用委托,可以分发多个方法出去。举例:定义多个通知不同人的信息,例如经理,员工,客户。可以针对性的制定不同的通知,调用委托,可以一次性的群发给他们。
//委托使用场景2,方法的参数是个方法,例如按钮方法,参数是一个点击事件的方法,可以通过委托实现点击事件的方法。
public class Demo : MonoBehaviour
{
    Func<int> sendMessage1;
    Func<string, int> sendMessage2;

    Func<int, string> buttonClick;

    void Start()
    {
        sendMessage1 += SendMessageToCustomer;
        sendMessage1 += SendMessageToManager;

        sendMessage1();

        sendMessage2 += SendMessageToCustomer2;
        sendMessage2 += SendMessageToManager2;

        sendMessage2("123");

        //常规写法
        CreateButton(buttonClick += ButtonClickMethod);
        //简化写法
        CreateButton(ButtonClickMethod);
    }


    public int SendMessageToManager()
    {
        Debug.Log("给经理发信息 0");
        return 0;
    }

    public int SendMessageToCustomer()
    {
        Debug.Log("给客户发信息 0");
        return 0;
    }

    public int SendMessageToManager2(string str)
    {
        Debug.Log($"给经理发信息次数 = {str}");
        try
        {
            return Convert.ToInt32(str);
        }
        catch (Exception ex)
        {
            Debug.Log($"error = {ex}");
            return 0;
        }
    }

    public int SendMessageToCustomer2(string str)
    {
        Debug.Log($"给客户发信息次数 = {str}");
        try
        {
            return Convert.ToInt32(str);
        }
        catch (Exception ex)
        {
            Debug.Log($"error = {ex}");
            return 0;
        }
    }

    public void CreateButton(Func<int, string> myButtonClick)
    {
        myButtonClick(100);
    }

    public string ButtonClickMethod(int num)
    {
        Debug.Log($"按钮点击事件,模拟点击次数 = {num}");
        return num.ToString();
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值