首先让我们在内存中注册一个单例:

//单例创建需求变量(以全局调用,创建一片固定内存)
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(参);

 

 posted on 2021-04-30 17:04  雨落江州  阅读(92)  评论(0编辑  收藏  举报