C# 之委托与事件
2016-08-24 21:39
357 查看
这几天因为要弄这个任务系统,接触C#的委托与事件,刚开始看的时候头真的是很大,找了很多说明的,都是越看越是糊涂,最后看到一篇文章才渐渐有点灵感。感谢
http://www.cnblogs.com/David-Huang/p/5150671.html 此博客博主。
委托:个人在这里理解 委托就是 定义一个引用,一个可以记录函数指针的引用。
事件:就是基于委托定义的。
其实这里的事件 payxx 就差不多和string 一样可,只不过是存函数指针的变量。
这里上一个例子代码:
payxx 存函数的地址,调用是按次数来的。
这里输出的结果是:
http://www.cnblogs.com/David-Huang/p/5150671.html 此博客博主。
委托:个人在这里理解 委托就是 定义一个引用,一个可以记录函数指针的引用。
public delegate void GreetingDelegate(int param);
事件:就是基于委托定义的。
public event GreetingDelegate payxx;
其实这里的事件 payxx 就差不多和string 一样可,只不过是存函数指针的变量。
这里上一个例子代码:
using UnityEngine; using System.Collections; using UnityEngine.UI; using System; public class basetest : MonoBehaviour { public GameObject panel; private bool isclick = false; public delegate void GreetingDelegate(int param); public event GreetingDelegate payxx; // Use this for initialization void Start() { } // Update is called once per frame void Update() { } void OnMouseOver() { if (Input.GetMouseButtonDown(0)) { //左键点击 Debug.LogError("你点击了NPC"); //playRenwu(); } } public void pay() { Debug.LogError("触发了委托"); } void playRenwu(bool isnotclick) { Debug.LogError("开始NPC任务"); panel.gameObject.SetActive(isnotclick); } //protected virtual void Onpayxxxxx(int param) //{ // if (payxx != null) // { // Debug.LogError("委托的事件触发了"); // payxx(param); // } // else // { // Debug.LogError("委托的事件没触发"); // } //} public void Onpayxx(int param) { if (payxx != null) { payxx(param); } else { } } public void Myfuntion2(int param) { Debug.LogError("第二次调用=" + param); } public void MyFunction(int param) { Debug.LogError("OKOKOKOKO=" + param); } public void Onclickbutton() { basetest eventTest = new basetest(); eventTest.payxx += new GreetingDelegate(MyFunction);//安装事件 eventTest.payxx += new GreetingDelegate(Myfuntion2);//安装事件 eventTest.Onpayxx(10); if (isclick == false) { Debug.LogError("你点击了按钮"); isclick = true; playRenwu(true); } else { isclick = false; playRenwu(false); } } }
payxx 存函数的地址,调用是按次数来的。
这里输出的结果是:
相关文章推荐
- 用 C++ 实现 C# 中的 委托/事件 (2-delegate event functor)
- 深入理解C#编程中的组件-事件-委托
- 我对C#中事件委托的通俗看法
- C#里的委托和事件实现Observer
- C#中利用委托传递事件
- C#中的组件-事件-委托
- C#委托及事件
- C#中的委托与事件
- C#-委托和事件
- C#中委托,事件理解入门
- 用C++实现C#中的委托/事件(标准C++之升级版)
- C#的事件处理与委托
- C#里的委托和事件实现
- C#中的委托与事件[翻译]
- C#里的委托和事件实现Observer
- C#体验·委托和事件
- 用 C++ 实现 C# 中的 委托/事件 (5-functor2)
- C#中,对委托和事件的理解
- 在C#的事件、多播中使用委托
- C# 事件 委托 教程