简介
实例
-
简单调用
using UnityEngine; public class DelegateExample : MonoBehaviour { //Step1. 定义类型----为Delegate定义一种函数原型 public delegate void MyDelegate(int args); //Step2. 声明变量----声明一个Delegate变量 public MyDelegate myDelegate; private void Start() { //Step3. 变量赋值----引用Delegate变量实现相应的函数 myDelegate = PrintNum; myDelegate(5); } public void PrintNum(int num) { print("Print number: " + num); } }
-
C# Event
把Event想象成一个视频作者,并且他还具有一大堆热情的粉丝,每天都在等待新视频的发布。为了在第一时间收看到新发布的视频,粉丝们大多会选择订阅视频作者,这样作者更新时你就会收到一条即时消息。event只负责告诉每个函数什么时候被调用,这些函数到底干了什么,event并不关心
//Idol.cs 广播消息 定义的event相当于源头,只要调用了该事件,都会引起注册该事件的人调用相应的注册方法 public class Idol : MonoBehaviour { public delegate void IdolBehaviour(string behaviour); public static event IdolBehaviour IdolDoSomethingHandler; private void Start() { //Idol 决定搞事了, 如果他还有粉丝的话, 就必须全部都通知到 if (IdolDoSomethingHandler != null) { IdolDoSomethingHandler("Idol give up writing."); } } }
//SubscriberA.cs 订阅消息 很早注册订阅了,当event发送了,那么就会调用对应方法 public