当前位置: 首页 > news >正文

中国建设招标网网站网易云跟帖 wordpress

中国建设招标网网站,网易云跟帖 wordpress,宁波网站推广软件服务,哈尔滨公司网站文章目录 一、前言1. 什么是委托#xff1f;2. 使用委托的优点 二、举例说明1. 例12. 例2 三、案例四、泛型委托Action和Func1. Action委托2. Func委托 五、参考六、完结 一、前言 1. 什么是委托#xff1f; 在Unity中#xff0c;委托#xff08;Delegate#xff09;是一… 文章目录 一、前言1. 什么是委托2. 使用委托的优点 二、举例说明1. 例12. 例2 三、案例四、泛型委托Action和Func1. Action委托2. Func委托 五、参考六、完结 一、前言 1. 什么是委托 在Unity中委托Delegate是一种用于处理方法回调的特殊类型。它允许您将方法作为参数传递给其他方法并在需要时调用这些方法。 委托在游戏开发中非常有用特别是在事件处理、消息传递和异步操作方面。它提供了一种灵活的方式来注册和触发方法而无需显式地知道这些方法的实现细节。 个人理解可以把委托理解为一个容器容器里面放可以放很多函数方法。一调用委托里面所有的函数方法都会同步被执行 2. 使用委托的优点 使用委托的优点如下 解耦性使用委托可以帮助解耦代码使得不同部分之间的依赖关系更加松散。通过将方法作为参数传递给委托可以将方法的调用从直接依赖于特定对象解耦从而提高代码的灵活性和可维护性。 可扩展性使用委托可以轻松地扩展代码功能。您可以通过在不修改现有代码的情况下注册或替换委托方法来添加新的功能或更改现有功能。这使得您可以将委托用于事件处理和插件系统等场景。 事件驱动委托在事件驱动的编程中非常有用。您可以使用委托将方法注册为事件的处理程序当事件发生时委托会自动调用所有注册的方法。这样您可以轻松地实现事件触发和处理的机制。 多线程支持在多线程编程中委托可以用于实现异步操作和回调。您可以将方法传递给线程让线程在适当的时候调用该方法以便在后台执行任务并返回结果。 可读性和可维护性使用委托可以使代码更具可读性和可维护性。通过使用委托您可以明确地指定关注点和功能并将其封装在独立的方法中。这样代码变得更易于理解、调试和修改。 总的来说委托提供了一种灵活且强大的机制可以改善代码结构和组织并支持一些重要的编程概念如解耦、事件驱动和多线程编程。它是一种在Unity中常用的工具可以提高代码的可维护性和可扩展性。 二、举例说明 1. 例1 举个例子来使用委托我们先定义一个宠物名称委托在TestA类中实现狗和猫的方法 using System.Collections; using System.Collections.Generic; using UnityEngine;public delegate void PetName(string name); //委托 (需要一个string类型的参数当宠物名称)//陆地动物类 public class TestA : MonoBehaviour {PetName petName; //声明委托void Start(){//委托petName Dog; //狗petName Cat; //猫//调用委托事件petName(大白);}//狗 因为委托调用所以需要一个string参数void Dog(string name){Debug.Log($我叫{name}是一只狗);}//猫void Cat(string name){Debug.Log($我叫{name}是一只猫);} }运行结果 从中我们可以看到当我们把两个方法狗猫“添加”到委托中时我们只需要调用定义的委托petName方法 就可以同时执行添加的两个方法。根据上面的委托的含义来解释我们创建了一个petName委托当作容器然后将dog狗cat猫方法添加到容器中这样我们只需要执行容器就可以将容器中的所有方法都给执行。 2. 例2 委托创建时会定义方法的类型。是否有无参数、有无返回值 using System.Collections; using System.Collections.Generic; using UnityEngine;public delegate void DelegateA(); //无参无返回值 public delegate void DelegateB(string name); //有参无返回值 public delegate string DelegateC(); //无参有返回值 public delegate string DelegateD(string name); //有参有返回值//陆地动物类 public class TestA : MonoBehaviour {//委托定义DelegateA delegateA; //无参无返回值DelegateB delegateB; //有参无返回值DelegateC delegateC; //无参有返回值 DelegateD delegateD; //有参有返回值void Start(){//添加方法delegateA A;delegateB B;delegateC C;delegateD D;//这里错误示范 delegateA委托添加B方法会报错原因委托定义了方法类型B方法类型不符合delegateA定义的方法类型会报错//delegateA B;//运行delegateA();delegateB();delegateC();delegateD();}void A() {Debug.Log(无参无返回值);}void B(string name){Debug.Log(有参无返回值);}string C(){Debug.Log(无参有返回值);return ;}string D(string name){Debug.Log(有参有返回值);return ;} }运行结果 错误示范 delegateA委托添加B方法会报错原因委托定义了方法类型B方法类型不符合delegateAi定义的方法类型会报错 三、案例 举一个大家经常用的例子你在CSDN中订阅一个博主的专栏游戏专栏当这个博主发布了这个专栏的一个最新文章就会收到消息。这个就是用的委托实现如下 1.创建一个博主类Blogger负责书写文章并且调用委托事件向订阅专栏的用于发送最新文章 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;//这是一个博主类负责书写文章并且调用委托事件向订阅专栏的用于发送最新文章 public class Blogger : MonoBehaviour {public InputField articleName; //文章名称public Button uploadBtn; //上传文章void Start(){//按钮监听uploadBtn.onClick.AddListener(UpLoad);}//上传事件void UpLoad() {//上传文章名称不为空时if (articleName.text!string.Empty){Debug.Log($博主上传文章{articleName.text});}} }2.创建一个有参无返回值的订阅委托用于存放订阅人员推送信息方法并在博主类中声明创建。与上方博主类结合完整代码如下 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public delegate void Subscribe(string name);//订阅委托 用于存放订阅人员的推送方法//这是一个博主类负责书写文章并且调用委托事件向订阅专栏的用于发送最新文章 public class Blogger : MonoBehaviour {public InputField articleName; //文章名称public Button uploadBtn; //上传文章public static Subscribe subscribe; //创建公用的静态订阅委托void Start(){//按钮监听uploadBtn.onClick.AddListener(UpLoad);}//上传事件void UpLoad() {//上传文章名称不为空时if (articleName.text!string.Empty){Debug.Log($博主上传文章{articleName.text});subscribe(articleName.text); //向订阅的人员发送信息}} }3.新建两个PeopleA、PeopleB人员类在里面声明Push推送消息方法并且在strat里添加到订阅委托中 PeopleA using System.Collections; using System.Collections.Generic; using UnityEngine;//订阅人员A public class PeopleA : MonoBehaviour {void Start(){Blogger.subscribe Push; //向订阅委托中添加人员A的推送方法}//推送信息void Push(string name){Debug.Log($我是人员A接收到博主最新文章{name});} }PeopleB using System.Collections; using System.Collections.Generic; using UnityEngine;//订阅人员B public class PeopleB : MonoBehaviour {void Start(){Blogger.subscribe Push; //向订阅委托中添加人员A的推送方法}//推送信息void Push(string name) {Debug.Log($我是人员B接收到博主最新文章{name});} }运行结果 四、泛型委托Action和Func 在Unity中我们除了可以自定义委托类型来定义委托我们还可以使用C#类库为我们已经准备好的两个内置委托类型Action和Func来定义委托它可以帮我们省去声明委托的这个步骤。它们都是泛型的委托Action是一个不返回任何值的委托类型而Func是一个具有返回值的委托类型。 要想使用【Action委托】或者【Func委托】首先我们需要入System名称空间才能使用 1. Action委托 Action委托表示一个不返回值的方法并且可以接受从0到16个参数。通过使用Action委托可以定义并传递不同参数类型的方法。例如 using UnityEngine; using System;public class Example : MonoBehaviour {// 定义一个Action委托它没有返回值private Actionint myAction;private void Start(){myAction PrintNumber1;myAction PrintNumber2;myAction(5);}private void PrintNumber1(int number){Debug.Log(number);}private void PrintNumber2(int number){Debug.Log(number1);} }2. Func委托 Func委托表示一个具有返回值的方法并且可以接受从0到16个参数。与Action委托不同Func委托要求指定最后一个泛型参数作为返回类型。以下是一个示例 using UnityEngine; using System;public class Example : MonoBehaviour {// 定义一个Func委托它接受一个int类型的参数并返回一个字符串private Funcint, string myFunc;private void Start(){myFunc AddOneToString;string result myFunc(10);Debug.Log(result); // 输出 11}private string AddOneToString(int number){return (number 1).ToString();} }五、参考 【文章】https://blog.csdn.net/qq_42345116/article/details/123408419【视频】https://www.bilibili.com/video/BV1U64y1F7c9 六、完结 如果你发现了文章中存在错误或者有更好的解决方法也欢迎评论私信告诉我哦 好了我是向宇https://xiangyu.blog.csdn.net/ 一位在小公司默默奋斗的开发者出于兴趣爱好于是最近才开始自习unity。如果你有任何问题欢迎你来评论私信告诉我 虽然有些问题我可能也不一定会但是我会查阅各方资料争取给出最好的建议希望可以帮助更多想学编程的人共勉~
http://www.hkea.cn/news/14279095/

相关文章:

  • 沈阳模板建站公司有哪些wordpress自动分享插件下载
  • 网站建设课程报告论文设计网站开发费用计入什么科目
  • 心理健康网站建设论文wordpress加载完再显示图片
  • 网站建设多少网站建设阶段的推广
  • 杰奇怎么做网站地图北京三里屯
  • 太原网站制作公司哪家好设计师必看的10个网站
  • wordpress后台怎么进的南昌seo外包公司
  • 全网推广网站电商网站优缺点
  • 快速排名网站系统新建网站如何被搜索
  • 比较好的网站建设品牌升级成都专业做网站公司有哪些
  • seo的网站特征网站建设技术托管
  • 建站源码程序自己想做个网站
  • 中国企业网官方网站查询个人网站设计作品html
  • 外贸网站模板哪里下载2017网站开发新技术
  • 青海论坛网站建设网站流量下滑
  • 慈溪怎么做网站php网站开发怎么样
  • 昆山网站推广wordpress+技术类模板下载
  • ps做网站的分辨率多少怎么搭建属于自己的网站
  • 怎么注销网站备案专业网站优化公司
  • 建设银行招生网站网站建设专员
  • 南京哪家做电商网站外贸推广平台有哪几个
  • 做的网站打不开新余建站公司
  • dede网站搬家后为什么都没有内容呢传业做微采商城网站
  • 江苏建站网站建设业务的途径
  • wordpress 视频站模板下载phpstudy如何建设网站
  • 网站界面设计 考虑因素厦门注册公司网上申请入口
  • 怀化主要网站互联网公司简介ppt范本
  • 福州做网站外包团队大型营销型网站建设
  • 即墨做网站的天津做网站优化价格
  • 医院客户做网站找谁国外的网站需要备案吗