最终实现效果,一个使用UGUI实现的简单的对话框信息,点击npc出现对话框,点击Continue跳转下一句,直到最后一句点完对话框消失
主要实现思想:
定义一个interactable基类,用于表示响应用户鼠标的点击事件,在interaceable类中注册所有的鼠标管理单例中的事件(鼠标管理单例在上上篇博文中有讲述)所有可交互的物体都继承这个基类,基类定义一个虚方法interace()表示互动,具体的实现交给子类实现,interaceable基类代码如下:
public class Interactable : MonoBehaviour
{
[HideInInspector]
public NavMeshAgent playerAgent;
private bool interacted = true;
private void Start()
{
//注册事件
MouseManager.Instance.OnLeftClick += MoveToInteraction;
//获取player的navmesh agent设定目的地让其移动
playerAgent = GameObject.FindGameObjectWithTag(TagManager.Instance.player).GetComponent<NavMeshAgent>();
}
public virtual void MoveToInteraction(GameObject go)