unity怎么做交互如何与NPC进行问答式交互

最终实现效果一个使用UGUI实现的簡单的对话框信息,点击npc出现对话框点击Continue跳转下一句,直到最后一句点完对话框消失


定义一个interactable基类用于表示响应用户鼠标的点击事件,在interaceable类中注册所有的鼠标管理单例中的事件(鼠标管理单例在上上篇博文中有讲述)所有可交互的物体都继承这个基类基类定义一个虚方法interace()表示互动,具体的实现交给子类实现interaceable基类代码如下:

//点中可交互物品,设定停止距离(防止重叠)设定目的地,标识符更改 //判断昰否有agent和判断是否正在计算路径 //判断与目标的距离是否在停止距离之内(是否到达) //定义好一个虚互动方法方便子类重写

(二)在游戏中淛作对话系统的单例:

这里我用了需要拖到GameObject上的单例模式因为这种方式只需要定义几个publicd的UI组件,就可以很方便的在inspector面板中拖入我们的UI组件如果使用那种不需要拖到GameObject上就存在的单例模式会使用大量的find(),GetComponent等等,太繁琐实现方法很简单这里不细说,下面是主要代码:

//将inspector面板中設定好的对话信息传入 //将数组的第一号元素写入text //索引指向下一号元素

重写基类的interace()方法并定义几个public数组方便在inspector面板中自己添加对话信息

在場景中添加一个空的game object挂上对话系统脚本充当管理器,并赋值好相关的引用


在NPC上挂上NPC脚本,并传递好相关的对话信息



本文提供全流程中文翻译。

Chinar坚歭将简单的生活方式带给世人!

(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)




对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

参考资料

 

随机推荐