Unity3D游戏开发之委托(Delegate)

Unity3D游戏开发之委托(Delegate)

1、定义

delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类。与其它的类不同,delegate类能够拥有一个签名(signature),并且它"只能持有与它的签名相匹配的方法的引用"。

它允许你传递一个类A的方法m给另一个类B的对象,使得类B的对象能够调用这个方法m。

delegate是面向对象、类型安全、可靠的受控(managed)对象。也就是说,运行时能够保证delegate指向一个有效的方法,你无须担心delegate会指向无效地址或者越界地址。

2、委托的声明原型

delegate <函数返回类型> <委托名> (<函数参数>)

public delegate void CheckDelegate(int number);

委托在.net内相当于声明了一个类,类如果不实例化为对象,很多功能是没有办法使用的,委托也是如此。

3、委托的实例化

委托实例化的原型

<委托类型> <实例化名>=new <委托类型>(<注册函数>)

CheckDelegate checkDelegate=new CheckDelegate(CheckMod);

4、创建步骤【狗刨学习网

(1)声明一个delegate对象,它应当与你想要传递的方法具有相同的参数和返回值类型。

(2)创建delegate对象,并"将你想要传递的函数作为参数传入"。

(3)通过上一步创建的对象来调用方法。

5、案例一

class Test

{

// 步骤1,声明delegate对象

public delegate void Get();

public static void GetNum() {

Console.WriteLine("aaaaaaaaaa");

}

static void Main(string[] args)

{

// 步骤2,创建Get对象

Get get = new Get(Program.GetNum)

// 步骤3,调用Get

get();

}

6、案例二

class DelegateUtilClass

{

public delegate void DelegateUtil(string sName);

static void Main(string[] args)

{

Console.WriteLine("输出结果是:");

DelegateUtil du = new DelegateUtil(DelegateUtilClass.OutPut);

du("I‘m learning delegate now !");

Console.ReadLine();

}

// 这是想要传递的方法,该方法与定义的委托(即DelegateUtil)具有相同的参数和返回值类型,函数名是不一样!

public static void OutPut(string sName)

{

Console.WriteLine("Hi, " + sName);

}

7、可以直接用匹配的函数实例化委托:

<委托类型> <实例化名>=<注册函数>

DelegateUtil du = OutPut(I‘m learning delegate now !);

时间: 2024-10-12 16:47:32

Unity3D游戏开发之委托(Delegate)的相关文章

Unity3D游戏开发初探—2.初步了解3D模型基础

一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被.机械等等,比如一个大楼的3D模型图.3D模型也包括玩具和电脑模型领域. 互联网的形态一直以来都是2D模式的,但是随着3D技术的不断进步,在未来的时间里,将会有越来越多的互联网应用以3D的方式呈现给用户,包括网络视讯.电子阅读.网络游戏.虚拟社区.电子商务.远程教育等等.甚至对于旅游业,3D互联网也能

[Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果

大家好,我是秦元培.欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以立即抓紧时间来这里更新博客.博主本来计划在Unity3D游戏开发之从<魂斗罗>游戏说起(上)--目标追踪这篇文章后再写一篇<Unity3D游戏开发之从<魂斗罗>游戏说起(下)>,只是眼下博主的项目进度有些缓慢,所以想等项目稳定下来以后再和大家分享. 作为大家等待博主更新博客的回报,我们今天来说一说Unity3D中的游戏场景异步

Unity3D游戏开发从零单排(六) - 人物运动及攻击连击

提要 今天要实现的是一个简单人物控制器.包括用w,a,s,d来控制人物上下左右跑动,鼠标左击发出连招,都是基于老的lagacy的动画.虽然unity3d自带有charactorcontroller,但是并不是很好用,所以人物控制相关的全部自己来实现.先上效果图: 场景搭建 首先下载这个package,里面包含了人物的动作还有地面的模型.将人物和地面都拖进场景中.这里的模型默认的动画模式是lagacy,不用修改.模型有点偏小,改变模型的scale值为10.最好不要改源文件的scale的scale

unity3D游戏开发实战原创视频讲座系列10之《保卫战:异形入侵》游戏开发第一季

讲解目录 <保卫战:异形入侵>游戏开发    1 第一讲   游戏演示和资源的介绍    1 第二讲  "异形"怪物的实现    1 第三讲  "异形"怪物生命值的体现    9 第四讲  "异形"怪物死后处理    12 第五讲  玩家的制作    15 第六讲  玩家的行走控制(键盘)    16 第七讲  武器的切换(鼠标)     16 第八讲  摄像头的变化(鼠标)    19 第九讲  子弹预制体和特效的制作    20

Unity3D游戏开发从零单排(五) - 导入CS模型到Unity3D

游戏动画基础 Animation组件 Animation组件是对于老的动画系统来说的. 老的动画形同对应的动画就是clip,每个运动都是一段单独的动画,使用Play()或CrossFade(),直接播放动画 或淡入淡出播放动画. animation.Play("name"); animation.CrossFade("name"); 下面的是它的几个属性 Animation:默认的动画片段: Aniamtions:包含的动画片段: Play Automaticall

【Unity3D游戏开发】—— 导入网上下载的.unitypackage包

这两天遇到了这样一个问题,网上下载的别人导出的.unitypackage包.如果双击打开,则会出现"Failed importing package "的错误. 为此很头疼,查了一些资料,需要将.unitypackage包复制到Editor\Standard Packages文件夹下, 然后ctrl+9打开 Asset Store, 点击下载然后找到刚刚复制的包名,点击Import导入即可. 还有一种方法类似,将.unitypackage包复制到Editor\Standard Pack

Unity3D游戏开发之详解 Animation类和Animator类

Unity3D游戏开发之详解 Animation类和Animator类 Animation类 animation组件用于播放动画.可以指定动画剪辑到动画组件并从脚本控制动画播放.在Unity的动画系统基于权重并且支持动画融合,叠加动画,动画混合,标签和完全控制动画播放的各个方面. 如果想播放一个简单的动画,可以使用Animation.Play:如果想在动画之间交叉淡入,可以使用Animation.CrossFade:如果想改变动画模式(循环,一次,乒乓),可以改变动画导入设置里面的动画帧的Wra

Unity3D游戏开发之当游戏开发遇上Excel

各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://blog.csdn.net/qinyuanpei. 今天我们的话题是Excel,作为常用的办公软件的Excel相信大家都不陌生啦.可是如果我们认为Excel只是办公软件的话,那么这就不只是天真而是Out了.事实上Excel和游戏开发有着密切的联系,不知道大家还记不记得那款利用Excel开发出来的三国杀,这可能是Excel第一次以游戏开发的身份出现在大家面前吧.我们知道在游戏开发领域有一种工作叫做策划,就像在软件开发领

Unity3D游戏开发软件破解版安装

怎么获取Unity3D游戏开发软件,笔者在这里就告诉大家一个小技巧,有兴趣的朋友可以继续往下看. 下载Unity3D当然要到官网(建议用迅雷下载),安装后还需要注册,这里就建议大家根据实际情况考虑啦!如果是自己学习研究用,就没必要去购买,完全可以用破解版本;如果是公司开发用,还是买一个为好.注:Unity3D是按功能模块收费的. 没注册过Unity3D游戏开发软件的朋友,可以跟着以下步骤注册.这里我会提供一种破解法,需要破解版安装包的朋友请到菜鸟在线官网上注册并联系客服获取. 1.打开Unity