博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity 3D委托entrust
阅读量:5893 次
发布时间:2019-06-19

本文共 3072 字,大约阅读时间需要 10 分钟。

Unity 3D委托的多种用法


本文提供全流程,中文翻译。
Chinar 坚持将简单的生活方式,带给世人!
(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)


Chinar —— 心分享、心创新!
助力快速理解委托的作用、用法
为新手节省宝贵的时间,避免采坑!

Chinar 教程效果:



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


1

Entrust —— Delegate委托

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

举个栗子黑白88

class Program    {        private delegate string ChinarA(); //定义是一个委托类型:返回值为 string        private delegate void ChinarB();        ///         /// 测试方法B        ///         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();        }

输出:

4040方法1方法2

2

Action —— Action委托

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

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

对象的声明,该委托对象 对应 相应参数类型的函数

举个栗子黑白88
这里写图片描述

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

支持

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

拥有自己的服务器,无需再找攻略!
Chinar 提供一站式教程,闭眼式创建!
为新手节省宝贵时间,避免采坑!

1 ——
2 ——
3——
4 ——


70
Chinar


END

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

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

转载于:https://www.cnblogs.com/chinarbolg/p/9601436.html

你可能感兴趣的文章
安卓语音内录
查看>>
[Contest20180313]灵大会议
查看>>
[TCO2013]Block3Checkers
查看>>
undefined reference to 问题汇总及解决方法 ----- 还有一种问题没有解决(可能是顺序问题)...
查看>>
android复习第二天------布局
查看>>
表单根据不同的提交按钮转向不同的页面操作
查看>>
JAVA - Collections用法总结
查看>>
js数组方法总结
查看>>
实现“类似电梯”回到网页指定位置
查看>>
2019年6月多校联训b层——搜索算法 Problem A 宽搜 营救
查看>>
归并排序
查看>>
分页--SQL分页+EF分页+新闻分页
查看>>
py 的 第 16 天
查看>>
SEO网站结构优化
查看>>
shell脚本中 杀死可能成为僵尸进程的方法
查看>>
注意!ASP.NET MVC 3 的一个 OutputCache 问题
查看>>
TCP/IP详解学习笔记(1)-基本概念
查看>>
poj 1936 -- All in All
查看>>
malloc/free与new/delete的区别
查看>>
iOS 状态栏和导航条配置
查看>>