zoukankan      html  css  js  c++  java
  • Unity 3D委托entrust

    Unity 3D委托的多种用法


    本文提供全流程,中文翻译。

    Chinar 坚持将简单的生活方式,带给世人!

    (拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)



    Chinar —— 心分享、心创新!

    助力快速理解委托的作用、用法

    为新手节省宝贵的时间,避免采坑!


    Chinar 教程效果:



    全文高清图片,点击即可放大观看 (很多人竟然不知道)


    1

    Entrust —— Delegate委托


    Delegate —— 委托(像类一样需要声明,且返回类型要和对应的方法一致)

    举个栗子黑白88

    class Program
        {
            private delegate string ChinarA(); //定义是一个委托类型:返回值为 string
    
            private delegate void ChinarB();
    
    
            /// <summary>
            /// 测试方法B
            /// </summary>
            static void MethodB(ChinarB b)
            {
                b(); //委托可以直接传递方法来
            }
    
    
            static void Method1()
            {
                Console.WriteLine("方法1");
            }
    
    
            static void Method2()
            {
                Console.WriteLine("方法2");
            }
    
    
            static void Main(string[] args)
            {
                int     x  = 40;
                ChinarA a  = new ChinarA(x.ToString); //实例化一个 委托对象:a。 并且 a 指向了ToString方法
                ChinarA a1 = x.ToString;              //实例化一个 委托对象:a1。 并且 a1 指向了ToString方法
    
                string s  = a();         //通过调用委托,即可完成调用函数
                string s1 = a1.Invoke(); //同样完成调用
                Console.WriteLine(s);
                Console.WriteLine(s1);
    
    
                /*
                 * 委托类型可以当做一个参数来用
                 */
    
                ChinarB b = Method1;
                MethodB(b);
                b = Method2;
                MethodB(b);
    
                Console.ReadLine();
            }

    输出:

    40
    40
    方法1
    方法2

    2

    Action —— Action委托


    Action —— 委托(具备传入参数,但不具备返回值)

    Action < T > —— 委托(尖括号,最多支持16个类型的传入)

    对象的声明,该委托对象 对应 相应参数类型的函数
    举个栗子黑白88
    这里写图片描述

        /// <summary>
        /// 测试Action类
        /// </summary>
        class Program
        {
            /// <summary>
            /// 程序主入口
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                Action a = MethodA; //Action 是系统 为了方便,自定义的一个委托类型,可以指向一个没有参数、没有返回值的函数
    
                Action<int> b = MethodB; //定义了一个委托对象b,可指向一个 拥有int类型形参的函数,照样没有返回值
    
                Action<string> c = MethodC; //定义了一个委托对象c,可指向一个 拥有string类型形参的函数,照样没有返回值
    
                Action<int, string, float> d = MethodD; //定义了一个委托对象c,可指向一个 拥有3个类型形参的函数,照样没有返回值
    
    
                /*
                 * Action<T> 对象的声明,尖括号中最多支持传入16个类型。  该委托对象 对应 相应参数类型的函数
                 */
    
                a();
                b(666);
                c("Chinar");
                d.Invoke(1, "3", 1);
                Console.ReadLine();
            }
    
    
            /// <summary>
            /// 有3个形参的方法
            /// </summary>
            /// <param name="arg1">整形</param>
            /// <param name="arg2">字符串</param>
            /// <param name="arg3">浮点</param>
            private static void MethodD(int arg1, string arg2, float arg3)
            {
                Console.WriteLine("方法D:" + arg1 + arg2 + arg3);
            }
    
    
            private static void MethodC(string obj)
            {
                Console.WriteLine("方法C:" + obj);
            }
    
    
            static void MethodB(int b)
            {
                Console.WriteLine("方法B:" + b);
            }
    
    
            static void MethodA()
            {
                Console.WriteLine("方法A");
            }
        }

    输出:

    方法A
    方法B:666
    方法C:Chinar
    方法D131

    支持

    May Be —— 搞开发,总有一天要做的事!


    拥有自己的服务器,无需再找攻略!

    Chinar 提供一站式教程,闭眼式创建!

    为新手节省宝贵时间,避免采坑!


    先点击领取 —— 阿里全产品优惠券 (享受最低优惠)


    1 —— 云服务器超全购买流程 (新手必备!)

    2 —— 阿里ECS云服务器自定义配置 - 购买教程(新手必备!)

    3—— Windows 服务器配置、运行、建站一条龙 !

    4 —— Linux 服务器配置、运行、建站一条龙 !





    Chinar


    END

    本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

    对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

    对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

  • 相关阅读:
    axios 封装
    Git 常用命令行
    React Native 开发环境搭建
    React Native 组件分类
    日期插件rolldate.js的使用
    单图片上传
    使用css完成物流进度的样式
    搜索过滤 以及排序
    v-for的使用方法
    v-if 和v-show 用法
  • 原文地址:https://www.cnblogs.com/chinarbolg/p/9601436.html
Copyright © 2011-2022 走看看