在unity中如何使用delegate

总结下使用C#中的委托(delegate)吧,其实这个并不难,但是对于没接触过的人还是有点小问题的,现在我在这做一个简单的例子来帮助大家对delegate的理解吧,想要更加加深对委托的理解,请度娘下吧,我就不在这丢人了,我也是百度后才对委托有了进一步的理解的!

    我们在unity中先建一个脚本,取名为TestDelegate。我做的这个测试主要是点击输出中文名字按钮来输出中文名字,点击英文名字来输出英文名字,这里有2个函数,一个是输出中文名字,还有一个就是输出英文名字的,如果我们不用委托的话,想要实现这个函数的话,那我们就要使用判断语句来实现吧(if  else  , switch)。现在用委托的话我们就不用写判断语句了,想我这样的人,大部分代码都是判断语句,现在我看见if  else, switch,都心烦啊,大神的代码都很少出现这些呀,在其中也为我敲醒了一个警钟了,还得好好加倍努力啊, 好了 现在我们来写下简单的代码吧。如下

using UnityEngine;using System.Collections;

public class TestDelegate : MonoBehaviour

{

 

    //定义一个委托(格式是不是很类很像),用来指向我们某个函数。(c++里面的指针函数)

    //param参数是名字

    private delegate void DebugString(string param);

 

    /// <summary>

    /// 输出中文名字

    /// </summary>

    public void DebugNameOfChina(string str)

    {

        Debug.Log("中文名字:" + str);

    }

 

    /// <summary>

    /// 输出英文名字

    /// </summary>

    public void DebugNameOfEnglish(string str)

    {

        Debug.Log("English Name:" + str);

    }

 

    //定义一个委托的变量事件

    private DebugString handlerDebugString;

 

 

    void OnGUI()

    {

        if (GUILayout.Button("输出中文名字"))

        {

            //我想输出中文名字的话就给handlerDebugString  赋值成输出中文名字的这个函数DebugNameOfChina

            handlerDebugString = DebugNameOfChina;

            handlerDebugString("何建春");

        }

        else if (GUILayout.Button("Debug English Name"))

        {

            //我想输出英文名字的话就给handlerDebugString  赋值成输出中文名字的这个函数DebugNameOfEnglish

            handlerDebugString = DebugNameOfEnglish;

            handlerDebugString("Hejianchun");

        }

    }

 

   

}

 

更多unity2018的功能介绍请到paws3d学习中心查找。链接https://www.paws3d.com/learn/,也可以加入unity学习讨论群935714213

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值