Unity 委托 (Delegate) 的简单理解以及实现

这篇具有很好参考价值的文章主要介绍了Unity 委托 (Delegate) 的简单理解以及实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

委托相当于把某一个方法当成参数,当执行委托的时候就相当于执行了方法,所以这个方法必须和委托具有相同的参数类型.

委托的简单实现


using UnityEngine;

//委托(代理) 是存有对某个方法的引用的一种引用类型变量。
//委托语法:delegate <return type> <delegate-name> <parameter list>
public class DelegateTest : MonoBehaviour
{
    //声明一个没有返回值的委托,委托可以写在类中也可以写在类名的外面
    public delegate void PrintString(string value);
    
    void Start()
    {
        DebugString("普通的方法");

        //声明一个委托并且将和委托具有相同参数类型的方法DebugString传入
        PrintString p1 = new PrintString(DebugString);
        //此时这个委托具有和 DebugString方法相同的功能
        p1("委托测试");
    }
    //普通的方法,输出你传入的字符串
    public void DebugString(string s)
    {
        Debug.Log(s);
    }
  
}

 输出的结果

unity 委托,unity,开发语言,unity,委托,代理,Delegate


多播:委托对象可使用 "+" 运算符进行合并。一个合并委托调用它所合并的两个委托。只有相同类型的委托可被合并。"-" 运算符可用于从合并的委托中移除组件委托。

简单来说就是委托执行的时候可以执行多个方法


using UnityEngine;

//多播(组播),委托对象可使用 "+" 运算符进行合并。一个合并委托调用它所合并的两个委托。只有相同类型的委托可被合并。"-" 运算符可用于从合并的委托中移除组件委托。
public class DelegateTest : MonoBehaviour
{
    //声明一个没有返回值的委托,委托可以写在类中也可以写在类名的外面
    public delegate void PrintString(string value);
    
    void Start()
    {

        //声明一个委托并且将和委托具有相同参数类型的方法DebugString传入
        PrintString p ;
        PrintString p1 = new PrintString(DebugStringOne);
        PrintString p2 = new PrintString(DebugStringTwo);
       
        p = p1;
        p += p2;
        //调用多播
        p("委托测试");
      
    }
    //普通的方法,输出你传入的字符串
    public void DebugStringOne(string s)
    {
        Debug.Log("DebugStringOne:" + s);
    }
    public void DebugStringTwo(string s)
    {
        Debug.Log("DebugStringTwo:" + s);
    }
}

输出结果

unity 委托,unity,开发语言,unity,委托,代理,Delegate


 文章来源地址https://www.toymoban.com/news/detail-598979.html

到了这里,关于Unity 委托 (Delegate) 的简单理解以及实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 游戏开发、01 基础篇 | 知识大全、简单功能脚本实现

    Unity默认窗口布局 Hierarchy 层级窗口 Scene 场景窗口,3D视图窗口 Game 游戏播放窗口 Inspector 检查器窗口,属性窗口 Project 项目窗口 Console 控制台窗口 恢复默认布局 Window | Layouts | Default 调大页面字体 Preference | UI Scaling 新项目默认创建了 SampleScene 场景 {摄像机,平行光} SampleScen

    2024年02月09日
    浏览(57)
  • unity: C#的Action Event Delegate的异同

    目录 一、Action 二、Event 三、Action和Event区别: 四、Delegate 总结:Action Event Delegate的异同 前言: Action、Event和Delegate都是C#语言中的重要概念,分别用于管理函数指针,并且在某些情况下可以实现相同的目标。 Action是一种函数指针类型,它指向一个没有参数和返回值的函数。

    2024年02月12日
    浏览(37)
  • UE4/5C++:Delegate(委托or代理?)的使用

    目录 DECLARE的使用 单播: 绑定UObject 绑定 调用 无参调用 解除绑定: 绑定Lambda表达式: 绑定c++原生的c++类的函数: 绑定共享指针: 绑定静态函数: 绑定线程安全的共享指针: 绑定一个Function方法: 多播 动态单播代理:  用在蓝图上: 在c++中如何绑定:  动态多播代理  

    2024年02月07日
    浏览(81)
  • Unity对象池的简单理解

      通常我们需要用到某个游戏对象时,我们会在内存中分配一部分空间new一个对象出来,之后在该对象完成任务之后,再将其摧毁,释放掉内存。在Unity中就是我们在需要的时候调用Instantiate()函数来生成一个游戏对象。   在用完该对象之后,调用Destory()函数将其摧毁。

    2024年01月21日
    浏览(34)
  • C#中的委托(Delegate)和事件 (Event)详解与使用范例

    最近天气晴雨不定,你因为害怕打游戏时忘记在下雨时收衣服或者在天晴时把衣服挂出去,于是你委托好友小明在天气发生变化时打电话通知你,这就是一种委托. 下面是这种委托的实例代码 以上代码的输出为 值得一提的是,如下代码为创建一个继承自Delegate类的名为XiaoMing的子类

    2023年04月12日
    浏览(40)
  • 关于Unity Meta文件的简单理解

    Unity中的所有资源都会生成一个对应名字,但是后缀为.meta的文件,作为这个资源的唯一标识。 meta文件的生成规则如下 A.meta文件不变的情况: 1.如果连带meta文件一起拷贝资源,则不会再生成meta文件,依然使用原来的GUID 2.如果Unity编辑器开启时,删除meta文件,Unity会重新生成

    2024年02月13日
    浏览(46)
  • Unity单例模式较为简单的理解

    本文将介绍unity中单例模式从最简单到复杂的实际使用。 单例模式是一种设计模式。 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软

    2023年04月11日
    浏览(37)
  • 面试常考:C# 委托(delegate、Action、Func、predicate)和事件

    刚开始工作的时候,觉得委托和事件有些神秘,而当你理解他们之后,也觉得好像没有想象中的那么难,这篇博文算是自己对委托和事件的一次梳理和总结。 C#中的委托,相当于C++中的指针函数,但委托是面向对象的,是安全的,是一个特殊的类,当然他也是引用类型,委托

    2024年02月16日
    浏览(43)
  • Unity---委托与事件

    目录 1.委托和事件在使用上的区别是什么? 2. delegate委托 2.1示意图 2.2 DelegetTest.cs 2.3 Deleget_A.cs 2.4 Deleget_B.cs 2.5 运行unity. 点击按键 A  2.6 点击按键 B  3.Event 事件 3.1单个通知 3.1.1示意图  3.1.2 Event_Test.cs 3.1.3 Event_A.cs 3.1.4 运行 点击按键A  3.2多个通知 3.2.1示意图  3.2.2 Event_Test

    2024年02月07日
    浏览(46)
  • Unity学前C#:委托详解

    字面意思就是:这件事情我不亲自去做,而是委托别人去做 C#中的委托有点类似c/c++中的函数指针,但是C#中的委托就可以看作是函数指针的升级版 以下是c/c++的函数指针实例  先理解一个概念: 一切皆地址 在计算机中所有的程序以及数据的存储都是有地址可循的,计算机组成原理

    2024年03月19日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包