using UnityEngine;
//定义一个委托类型,名为MyDelegate
public delegate void MyDelegate();
public class MyEventPublisher : MonoBehaviour
{
//定义一个静态事件,名为OnMyEvent,类型为MyDelegate;
public static event MyDelegate OnMyEvent;
private void Update()
{
//检测是否按下防御键——C
if (Input.GetButtonDown("Defend"))
{
//如果事件不为空(有订阅者),调用所有订阅此事件的方法。
OnMyEvent?.Invoke();
}
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyEventSubscriber : MonoBehaviour
{
//脚本启用时订阅OnMyEvent事件
private void Start()
{
MyEventPublisher.OnMyEvent += MyEventHandler;
}
//脚本禁用时取消订阅OnMyEvent实践
private void OnDisable()
{
MyEventPublisher.OnMyEvent -= MyEventHandler;
}
//事件处理方法,事件触发时调用
void MyEventHandler()
{
//输出调试信息到控制台
Debug.Log("触发委托事件");
}
}
之后将这两段代码附着到游戏物体上就可以看到输出了,建议自己敲一遍更能理解