Unity 3D委托的多种用法

Chinar
END
| 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) |
| Chinar —— 心分享、心创新! 助力快速理解委托的作用、用法 为新手节省宝贵的时间,避免采坑! |
Chinar 教程效果:
全文高清图片,点击即可放大观看 (很多人竟然不知道)
1
Entrust —— Delegate委托
Delegate —— 委托(像类一样需要声明,且返回类型要和对应的方法一致)
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(); }输出:
4040方法1方法22
Action —— Action委托
Action —— 委托(具备传入参数,但不具备返回值)
Action < T > —— 委托(尖括号,最多支持16个类型的传入)
对象的声明,该委托对象 对应 相应参数类型的函数
/// <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方法D:131支持
May Be —— 搞开发,总有一天要做的事!
| 拥有自己的服务器,无需再找攻略! Chinar 提供一站式教程,闭眼式创建! 为新手节省宝贵时间,避免采坑! |
先点击领取 —— 阿里全产品优惠券 (享受最低优惠)
1 —— 云服务器超全购买流程 (新手必备!)
2 —— 阿里ECS云服务器自定义配置 - 购买教程(新手必备!)
3—— Windows 服务器配置、运行、建站一条龙 !
4 —— Linux 服务器配置、运行、建站一条龙 !
Chinar
END
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址
继续阅读与本文标签相同的文章
上一篇 :
Unity 3D-Canvas画布的三种模式
下一篇 :
C#字符串string以及相关内置函数
-
C#读取文件夹下所有指定类型,并返回相应类型数据
2026-05-27栏目: 教程
-
Unity 3D光源-Point Light点光源详解/灯泡、模拟灯光效果教程
2026-05-27栏目: 教程
-
Unity等待写入数据
2026-05-27栏目: 教程
-
Unity 思考问题的办法
2026-05-27栏目: 教程
-
Unity 项目中委托Delegate用法案例
2026-05-27栏目: 教程
