首页 > 编程语言 > 详细

【unity2D】API-学习记录4-委托Delegate

时间:2021-04-30 20:56:59      阅读:20      评论:0      收藏:0      [点我收藏+]

目标

事件Event是基于委托Delegate的,所以先来学习Delegate的基本概念及其初步应用

是什么

形象地说,委托是存放函数的容器

委托不关心一个函数是如何实现的,它的形态只是一个函数签名,亦可理解为:它定义了某类 具有同样函数签名和返回值的 函数的“类型”

委托除了Delegate,还有Action、Func、predicate,这里我们先只学习Delegate。

用法

使用Delegate,一般分为三步:

  1. 定义委托类型。

当我们用delegate关键字声明委托时,编译器自动为我们生成类。类的名字即为委托变量名,访问类型为定义的委托访问类型。

  1. 声明一个或多个该类型的委托函数。
  2. 通过该委托来调用该函数。

代码相关

using UnityEngine;

public class DelegateTest : MonoBehaviour
{
	public delegate void PlantAttck(int zombieNO);//定义委托类型

	public PlantAttck plantAttck;//声明委托变量


	void Update()
	{
		if(Input.GetKeyDown(KeyCode.K))
		{
			plantAttck = null;
			plantAttck += CabbageAttack;
			plantAttck += PeaAttack;
			plantAttck(2);//调用委托
		}

		if(Input.GetKeyDown(KeyCode.L))
		{
			plantAttck = null;
			plantAttck += PeaAttack;
			plantAttck += CabbageAttack;
			plantAttck(3);//调用委托
		}
	}

	void PeaAttack(int zombieNO)//传入僵尸的编号,使豌豆们指定攻击该僵尸
	{
		Debug.Log("Peas are attacking NO."+ zombieNO +" zombie.");
	}

	void CabbageAttack(int zombieNO)//传入僵尸的编号,使卷心菜们指定攻击该僵尸
	{
		Debug.Log("Cabbages are attacking NO."+ zombieNO +" zombie.");
	}
}

依次按下JK、L键,结果如图
技术分享图片

总结

使用委托时,一般分三步:

  1. 定义委托类型。
  2. 声明一个或多个该类型的委托函数。
  3. 通过该委托来调用该函数。

注意事项

从上面代码和输出结果应该可以看出一些端倪:

  1. delegate变量作为函数容器,可以同时被委任多个函数。

  2. 函数原型相同时,把这类函数传递到delegate上,delegate就能按照“装载”顺序,执行它“装载”的所有函数。

参考资料

委托(C# 编程指南)
C# Event/UnityEvent辨析

【unity2D】API-学习记录4-委托Delegate

原文:https://www.cnblogs.com/OtusScops/p/14722349.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!