首先让我们在内存中注册一个单例:
//单例创建需求变量(以全局调用,创建一片固定内存)
public static MouseManager Instance;
private void Awake()
{
//单例的保持(保证)
if (Instance != null)
{
Destroy(gameObject);
}
Instance = this;
}
//创建一个event中的Action<需要的参数>类事件(using System;命名空间下)
//使用event需要有人注册吗,订阅他(这样当事件执行时,订阅注册他的函数也会跟着被执行(传入相同的参数))
public event Action<Vector3> OnMouseClicked;
进行订阅(注册)
private void Start()
{
//添加注册(订阅)一个函数到目标事件上(注册订阅者标识符参数返回值等要进和事件一致)
MouseManager.Instance.OnMouseClicked += MoveToTarget;
}
public void MoveToTarget(Vector3 target)
{
agent.destination = target;
}
使用
//OnMouseClick不为空的时候调用,并传入一个参数(事件调用时,所有订阅随之调用,传入的参数共用)
OnMouseClicked?.Invoke(参);