Unity Fungus插件的对话系统简单使用

这篇具有很好参考价值的文章主要介绍了Unity Fungus插件的对话系统简单使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Fungus是Unity免费的一款开源的插件,它可以无代码的实现玩家与NPC之间的对话,对于Fungus这个插件,我今天说一说我对它的看法以及一些简单的运用和简单的代码功能的实现。

这里需要导入Fungus插件,插件导完之后会出现Tools/Fungus

Unity Fungus插件的对话系统简单使用

 文章来源地址https://www.toymoban.com/news/detail-486341.html

SayDialog模板使用,Menu菜单选项,Character玩家NPC的创建,Flowchart小蘑菇使用。

Unity Fungus插件的对话系统简单使用

 

Unity Fungus插件的对话系统简单使用这里我用了一个胶囊体做为玩家,俩个Cube是NPC。这里我们需要通过靠近白色Cube,去开启对话。Unity Fungus插件的对话系统简单使用

 这里我给了白色Cube一个球型碰撞器,玩家只有进入到区域内,才能进行对话。我把它命名为NPC1,另一个是NPC2。

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

通过鼠标左键点击,去进行对话进行。这里的边框以及字体样式都用到了SayDialog这个东西,去给到使用的模板。待会我会告诉大家如何去改变格式。

Unity Fungus插件的对话系统简单使用

 这里结束对话,去找到NPC2进行对话,我在这里做了判断,如果不去和白色Cube进行对话是无法和它进行对话的。在和这个NPC2过程中我们会进行选项的选择,这里就涉及到了Menu的使用,

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 这里对任务进行获取,每一个选项选择都会有不同的结果,如果选择选项一,就是接收任务。会提示接收任务成功。选项二就是拒绝任务,将无法接收任务。

选择接受任务:我把代码部分放在Update上就会一直循环选择Unity Fungus插件的对话系统简单使用

 拒绝任务:

Unity Fungus插件的对话系统简单使用

 这里我们开始讲原理。

我们先创建Flowchart,它是用来管理对话的。创建完之后会出现一个小蘑菇。

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

点击小蘑菇之后,其他的不用管,点击Open Flowchart Window进入对话管理

 Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 点击GameStart,编辑对话

 Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 这里默认选项是GameStarted,游戏运行就开始对话。这里我们选择None,如何通过代码去判断对话。

双击+号,弹出一大堆对话框,我们这里简单说我们需要使用到的东西。

Unity Fungus插件的对话系统简单使用

 

Unity Fungus插件的对话系统简单使用

 这里我们要选择到SetSayDialog模板使用

 Unity Fungus插件的对话系统简单使用

 在Tools/Fungus/Create/SayDialog创建模板。

 在Tools/Fungus/Create/Character创建NPC角色,创建两个,一个NPC1,一个NPC2。

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 进行改名分辨NPC1和2

 Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 创建一个Plane,并在上面创建2个Cube,和一个胶囊体

Unity Fungus插件的对话系统简单使用

 双击打开SayDialog编辑对话框模板

Unity Fungus插件的对话系统简单使用

 

Panel:可以改变聊天背景

Unity Fungus插件的对话系统简单使用

 Image:是大蘑菇的图片

Continue:是右下角的图片

Unity Fungus插件的对话系统简单使用

 

Unity Fungus插件的对话系统简单使用

 这里我们就改变一个panel这个背景图片,编辑好之后就可以进入Flowchart,点击SayDialog并把刚刚编辑的SayDialog托给它,这样我们就编辑好了模板。模板下面的操作都会使用这个模板,除非你在编辑一个模板并在下面使用,那么这个模板就会被代替了

Unity Fungus插件的对话系统简单使用

 选择say对话,并给其选择该对话的NPC。这里我把俩句话都给到NPC1

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 之后我们右键创建新的对话,并重复之前的操作,并把对话给到NPC2Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

然后我们给它添加判断条件,点击Variables按一下“+”号再选择Boolean修改名称canTalk。然后选择Variable/SetVariable

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 在Second里面添加一个if判断

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

注:对话NPC位置不能弄错,因为用Secend对话的NPC没有经过使用Start对话的NPC是无法执行对话的!!!!

然后我们就给NPC代码,两个NPC(Cube)运用同一个脚本,需修改的是ChatName的名称。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Fungus;

/*
*创建者:
*创建时间:
*描述:
*版本:
*/
public class NPC : MonoBehaviour
{
    public string ChatName;//外面传入要进行的对话名称
    private bool canTalk=false; //判断当前是否可以判断读取对话
    private Flowchart f;

    void Start()
    {
        f = GameObject.Find("Flowchart").GetComponent<Flowchart>();//获取小蘑菇,对话系统
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.E))//按下键盘E开始对话
        {
            Say();
        }
    }
    //鼠标点击事件,如果鼠标点击NPC也允许读取动画
    private void OnMouseDown()
    {
        Say();
    }
    void Say()
    {
        if (canTalk) 
        {
            if (f.HasBlock(ChatName))//判断对话是否存在
            {
                f.ExecuteBlock(ChatName);//执行对话
            }
        }
    }
    private void OnTriggerEnter(Collider other)//触发器允许对话
    {
            canTalk = true;        
    }
    private void OnTriggerExit(Collider other)
    {
            canTalk = false;        
    }


}

所有这里改一下对话的名称,点击对话然后修改BlockName

Unity Fungus插件的对话系统简单使用

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

注:Cube必须添加碰撞器,玩家也要添加,并加刚体

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 给玩家一个移动的代码,让他进行移动

 void Update()
    {
        Vector3 v = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
        transform.position += v * 3 * Time.deltaTime;
        Talk();
    }

 Unity Fungus插件的对话系统简单使用

Unity Fungus插件的对话系统简单使用

 这里我们给NPC2的对话Second对话,添加俩个Menu选择分支,会弹出俩个选择框。

Unity Fungus插件的对话系统简单使用

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 这里我们如何判断我们选中的是哪个选择框呢,这里的操作和之前的Boolean是一样的。

我这里选择的一个Integer类型的Variables,并把它公开化。

Unity Fungus插件的对话系统简单使用

Unity Fungus插件的对话系统简单使用

 创建俩个对话。点击Menu选择TargetBlack,第一个Menu选择say1,第二个Menu选择say2

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

这样它就有了分支了,选择不同的选择,结果就不一样了。

Unity Fungus插件的对话系统简单使用

Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 Unity Fungus插件的对话系统简单使用

 如何判断一下我们选择的是哪个按钮,这里就用到了Variables/Integer的Change。

代码如下:

using System.Collections.Generic;
using UnityEngine;
using Fungus;
using UnityEngine.UI;
/*
*创建者:
*创建时间:
*描述:
*版本:
*/
public class Player1 : MonoBehaviour
{
    public Flowchart fc;
    public Menu b;
    

    public void Talk()
    {
        //获取IntegerVariable的值
        if (fc.GetIntegerVariable("Change")==1)
        {
            print("去钓鱼");
        }
        else if(fc.GetIntegerVariable("Change") == 2)
        {
            print("不去钓鱼");
        }
       
    }
 
    void Update()
    {
        Vector3 v = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
        transform.position += v * 3 * Time.deltaTime;
        Talk();
    }

}

 注:需要把Flowchart对象放入拖到代码上,不然会报错的。

Unity Fungus插件的对话系统简单使用

 选择选项1Unity Fungus插件的对话系统简单使用

 选择选项2

Unity Fungus插件的对话系统简单使用

 

到了这里,关于Unity Fungus插件的对话系统简单使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity3d 制作一个简单的NPC对话系统

    ​ 最近在自己写一个比较小的项目,虽然自己是一个策划,但是程序方面我觉得也是很有必要学一学的。 ​ 经过了接近一年的学习,也终于是可以独自写一些小的系统了。 ​ 这次自己写了一个比较简单的NPC对话系统,供大家参考。 进入对话区域 开始对话 Inspector面板可调

    2023年04月08日
    浏览(47)
  • Unity—对话系统&&GalGame游戏文字对话制作

    每日一句:人间总有一两,填我十万八千梦 目录 对话系统 文本逐字打印功能 GalGame游戏(美少女游戏)文字对话 被触发物体(挂载脚本)下UI,先不激活 public   class   TalkButton  : MonoBehaviour {      public  GameObject tipshow; //提示UI      public  GameObject talkUI; //对话UI     

    2023年04月22日
    浏览(46)
  • 新手向 使用C#自带方法制作unity存档系统(无插件)

    纯原创,自制 本人还是个在校的高中生,能力不精如果有漏洞欢迎指出 先放出我们示范项目的样子 演示项目工程文件下载 后面会在B站发详细的视频教程(所以文章之后肯会改) 嫌麻烦的直接复制到项目里就可以用哦 (全部的SaveSystem源码最后放出方便大家复制) 可以存储

    2024年02月10日
    浏览(54)
  • Unity:美观通用易扩展的对话系统

    unity:通用美观可快进的对话系统 素材下载地址 素材展示: 绘制地形 关于TileMap的使用,这里就不再过多介绍了,关于TileMap的介绍有很多 我们创建一个简单的地形如下: 绘制对话框,效果如下: 配置人物动画,主要是奔跑动画 实现简单的控制人物移动 新建脚本实现简单的

    2024年01月25日
    浏览(41)
  • unity新输入系统的简单使用(New InputSystem)

    1、在包管理器 unity注册表中下载安装InputSystem 2、给玩家添加组件PlayerInput,点击CreatAction,创建一个InputAct InputAct,这是玩家的输入文件,在里面可以设置玩家输入 3、使用 例如玩家控制角色移动 在InputAct中,默认已经设置好了移动的输入 这里是一个二维向量值 W(0,1)A(-1,0)S(0,-

    2024年02月13日
    浏览(38)
  • Unity 基于GraphView的对话系统设计(一)对话数据与节点编辑器

    使用节点编辑器编辑对话,便于策划等非程序岗参与项目开发 拓展性强,可自定义节点,方便根据项目需求进行拓展 使用逻辑简单、直观,无需进行大量配置 对话数据持久化储存,且带增删管理 节点可进行逻辑控制 首先,我们设计一下对话系统进行的结构分层,在该对话

    2024年02月11日
    浏览(47)
  • Unity代码混淆-最简单快捷的插件

    链接:https://pan.baidu.com/s/1Jbjk3VE16R_hwRNjO3clag  提取码:f738 AssetStore链接  优点:图形化界面,导入后只需点几个按钮即可完成代码混淆。  最后再选择一下混淆的强度Simple、Optimal。Simple的混淆强度低一些,相反Optimal的混淆强度更高,会将命名空间、属性Property、事件Event也做

    2024年02月11日
    浏览(28)
  • 【Unity实战】实现强大通用易扩展的对话系统(附项目源码)

    之前的对话系统因为存在一些错误和原作者不允许我分享,所以被我下架了,而且之前对话系统确实少了一些功能,比如最基本的逐字打印功能,原本来是打算后面补充的。 对话系统在游戏中实现太常见了,所以我又重新去找了一些对话系统的课程进行学习,把实现过程和笔

    2024年02月05日
    浏览(42)
  • [Unity] 实现ScriptableObject数据同步Excel表格(对话系统数据管理,C# ExcelNPOI)

            在制作游戏中需要管理各种各样的项目资源,其中游戏中的剧情文字也是一种需要管理的资源。自己刚开始接触游戏开发的时候,第一次看MStudio里面的对话系统教学,只讲了怎么写脚本同步UI的设置,并没有讲有什么方式去管理这些对话数据,视频里拿的是txt来演

    2024年02月10日
    浏览(58)
  • 解决问题:PyCharm / IDEA / JetBrains IDEs中 Github Copilot 插件无法使用对话/Chat功能

    在Pycharm里装了Github Copilot 插件,但发现只能进行代码补全,没法像ChatGPT一样聊天,CSDN上搜了半天居然没人提出这个问题,于是在Copilot的Github主页上到处寻找答案。 发现这个功能目前还在内测阶段,如果想要使用的话, 需要先去官网申请加入等待队列 !!! 官网地址如下

    2024年02月04日
    浏览(90)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包