Unity3D游戏开发之委托(Delegate)

【C#】委托-Delegate C#委托(Delegate) C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate)是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。 委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自System.Delegate类。 声明委托(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 !);
在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,【狗刨学习网】unity极致学院,致力于打造业内unity3d培训、学习第一品牌。  引子 在前面两篇文章: 我们了解 阅读详情

相关推荐

Unity3D技巧在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信

作者:王选易,出处:http://www.cnblogs.com/neverdie/欢迎转载,也请保留这段声明。如果你喜欢这篇文章,请点【推荐】。谢谢! 本文的参考博客:https://blog.youkuaiyun.com/wkkingsam/article/details/52403126 引子 在前面两篇文章: 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy ...

Arcobaleno 1990

Unity 委托Delegate的理解以及用法案例

文章目录一、什么是委托二、案例![在这里插入图片描述](https://img-blog.csdnimg.cn/20210422150657883.gif#pic_center)脚本说明总结 一、什么是委托 *委托顾名思义就是委托别人做一些事情,一般在做项目时经常遇到需要把函数作为参数去传递,或者去写一些回调方法,这个时候就可以用Delegate来解决 二、案例 脚本说明 首先是全局的一个控制脚本,挂在了Canvas下: using System.Collections; using System.Col

weixin_45432939的博客 5147

Unity3D的Delegate和SendMessage的性能差测试,以及Delegate在多线程使用要注意的小问题

一、回顾前面写的关于Delegate的消息传送优化文章,http://blog.youkuaiyun.com/chiuan/article/details/7883449  下面的代码是做一个简单的Delegate和SendMessage之间的优化性能差距测试: using UnityEngine; using System.Collections; /// /// Delegate basic. //

Chiuan的专栏 2万+

Unity 项目中委托Delegate用法案例

Unity 项目中委托Delegate用法案例 Unity中Delegate的用法场景 Chinar - 本文提供全流程,中文翻译。助力快速理解 C# Delegate的基本用法 Unity 中,委托多用于当某个值,或者物体状态发生改变的时候 其他一些操作需要同时进行监听 一旦状态发生,改变,所有注册在委托中的函数,都会被调用 这里以一个简单的 商店模式 来模拟流程 用委托实现,群体的函数、方法注册到对象中 注意: 我们需要 1 个主脚本用来管理 :服务员 3 个顾客类:顾客 A/B/C

Chinar优快云的博客 9629

Unity3D官方VR教学学习笔记之事件event与委托delegate

3.VR中的交互 VREyeRaycaster类 放入 maincamera 利用 raycast 检测 layer 来进行交互 寻找VRInteractiveItem 进行交互 Physics.Raycast(ray, out hit, m_RayLength, ~m_ExclusionLayers)         ~ 反选layer VRInteractiveItem i

Y_Wangwang的博客 2865

事件/委托机制(event/delegate)(Unity3D开发之十七)

Delegate作用我就不多说了,Unity中可以直接使用EventHandler实现事件委托,咱们直接事例吧。一、场景物体移动结束后事件监听假如PlayerControl,移动结束后触发MoveComplete事件。using UnityEngine; using System.Collections; using System;public class PlayerControl : MonoB

Cocos2der Game 8190

Untiy-委托[delegate]和事件[event]详解和区别(一)

                  Untiy-委托[delegate]和事件[event]详解和区别(一) 目录 1.博文介绍 2.委托(delegate) 3.委托的用法 4.资源包的下载 5.结语 1.博文介绍        简单介绍一下本篇文章,博主之前对委托和事件一直没有一个很透彻的理解,看了大量的文章和视频,总是不求甚解,博主的学习方式一般是先知道其怎么用,再去了解为什...

孙君的空间站 2348

【unity小技巧】委托(Delegate)的基础使用和介绍

在Unity中,委托(Delegate)是一种用于处理方法回调的特殊类型。它允许您将方法作为参数传递给其他方法,并在需要时调用这些方法。委托在游戏开发中非常有用,特别是在事件处理、消息传递和异步操作方面。它提供了一种灵活的方式来注册和触发方法,而无需显式地知道这些方法的实现细节。个人理解:可以把委托理解为一个容器,容器里面放可以放很多函数方法。一调用委托,里面所有的函数方法都会同步被执行。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7239

Unity/C#基础复习(5) 之 浅析观察者、中介者模式在游戏中的应用与delegate原理...

参考资料 【1】 《Unity 3D脚本编程 使用C#语言开发跨平台游戏》陈嘉栋著 【2】 @张子阳【C#中的委托和事件 - Part.1】 http://www.tracefact.net/tech/009.html 【3】 @张子阳【C#中的委托和事件 - Part.2】 http://www.tracefact.net/tech/029.html 【4】 @毛星云【《Effect...

weixin_30919571的博客 704

【从零开始入门unity游戏开发之——C#篇33】C#委托(`Delegate`)和事件(`event` )、事件与委托的区别、Invoke()的解释

C#委托(`Delegate`)和事件(`event` )、事件与委托的区别、Invoke()的解释

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2021

用树莓派搭建全功能NAS服务器(01):树莓派基础操作&OMV搭建

写在前面 对于文件互传来说,局域网和云盘的操作总是独立的,而且很难将两者的优势合为一体。如果想要集多种优势为一体,那么NAS应该就是较为完美的解决方案了。 在这个系列中我们尽量跳过一些枯燥的理论知识,专注于说明两件事:   1.NAS是什么&能做什么 2.搭建思路&怎么做   这中间也会涉及到一些方案的选择,同类方案我也会列出来和大家分享我已知的优缺点,有兴趣可以多种尝试。(侧重于软件) 虽然是用树莓派搭建的,但是对于debian linux系统下的NAS搭建有着很好的参

斯塔克家的真维斯的工作间 2万+

委托-事件的运用教程详解-中文游戏示例!(非常适合初学者学习)

Chinar blog :www.chinar.xin ToLua制作登录界面 本文提供全流程,中文翻译助力快速完成 Unity 服务器的购买、配置、以及网站的搭建为初学者节省宝贵的时间,避免采坑! Chinar —— 心分享、心创新!我们的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 Chinar 教程效果: 文章目录1 Intro —— 太累了,...

Chinar优快云的博客 1271

Abaqus小白必看:用Micromechanics Plugin轻松搞定RVE周期性边界条件(附避坑指南)

本文为Abaqus初学者提供了使用官方Micromechanics Plugin插件高效实现复合材料代表性体积单元分析的完整指南。文章详细讲解了从插件安装、模型准备、周期性边界条件自动设置到结果验证的全流程,并重点分享了处理复杂模型和避免常见错误的实用技巧,帮助用户大幅提升RVE分析效率与准确性。

weixin_28363123的博客 799

Unity3d学习笔记 Button添加事件

btn = this.GetComponent<Button>(); // 下面的方法把OnButtonClick方法注册到btn上 btn.onClick.AddListener( delegate () { // 这里添加你想要监听的事件 this.OnButtonClick(

一名小学生的辛酸奋斗史 677

用Matlab机器人工具箱搞定六轴机械臂建模:从DH参数到3D可视化(附完整代码)

本文详细介绍了如何使用Matlab机器人工具箱进行六轴机械臂建模,涵盖从DH参数转换到3D可视化的完整流程。通过正运动学验证、逆解计算和工作空间分析等实战案例,帮助开发者快速掌握机械臂建模技巧,并提供性能优化建议和完整代码示例。

weixin_28733637的博客 361

香橙派5B-RK3588-NPU内核升级至0.9.8:RKLLM多模态部署实战

本文详细介绍了香橙派5B-RK3588设备NPU内核升级至0.9.8版本的完整流程,重点讲解了升级的必要性、两种升级方案(预编译包安装与自行编译内核)以及RKLLM SDK的安装配置。通过实战演示多模态模型转换与推理,显著提升AI计算性能,为嵌入式AI部署提供实用指南。

salt9的博客 1027

Unity3D 表对象分类中的实现(C#)

// Sort by distance in descending order private void SortTargetsByDistance () { targets.Sort(delegate(Transform t1, Transform t2) { return Vector3.Distance(t1.position, myTransform.position).Co...

weixin_34247299的博客 95

010Editor实战:5分钟破解Zip伪加密文件(附BUUCTF真题解析)

本文详细介绍了如何使用010Editor快速破解Zip伪加密文件,包括BUUCTF真题的完整解析。通过修改关键字节,轻松解除伪加密状态,适用于CTF竞赛和实际工作场景,提升文件处理效率。

weixin_29325007的博客 326

在Unity3D中使用委托

在Unity3D中使用委托函数回调机制——委托using UnityEngine; using System.Collections;public class DelegateScripts:MonoBehaviour { //声明一个委托类型,它的实例引用一个方法 internal delegate void MyDelegate(int num); MyDelegate myD

ssw940521的博客 9972

FAST-LIO 实战:从 LI-Init 标定到 YAML 配置全解析

本文详细解析了FAST-LIO算法中LI-Init标定的关键步骤与YAML配置优化技巧。从激光雷达与IMU的时空标定原理到实战参数调优,提供了一套完整的解决方案,帮助开发者解决点云畸变、建图漂移等常见问题,提升SLAM系统在动态环境中的稳定性和精度。

weixin_42651281的博客 328

【数据同化第一期】基本概念介绍

【数据同化第一期】基本概念介绍

WW、forever的博客 1904

Unity3D之Delegate委托入门

先创建脚本CallDelegateTest.cs,添加代码 //方法1 private void DelegateToDo1(string info) { Debug.Log( info+ "DelegateToDo1"); } //方法2 private void DelegateToDo2(string info) { ...

qq_34648868的博客 4571

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Unity3D 利用C#实现简单的代理模式Delegate(委托)

Ref: http://www.cnblogs.com/shadow7/p/5892641.html 1、Delegate是什么? Delegate中文翻译为“委托”。 C#语言是支持代理的,并且代理是非常的好用的一种方式。简单的来说就是你委托别人帮你做一件事情,当委托人做完你委托的事情之后会告诉你他做完了。C#中的委托类似于C或C++中的函数指针。使用委托使程序员可以将方法引用

2834

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: Unity3D中脚本的执行顺序和编译顺序
下一篇: 数独算法
七大黍
博客等级 码龄20年 436粉丝 260原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值