【Unity 实用插件篇】

您所在的位置:网站首页 旁观者2没有对话框 【Unity 实用插件篇】

【Unity 实用插件篇】

2024-07-12 16:28| 来源: 网络整理| 查看: 265

请添加图片描述请添加图片描述前言今天带来的是Unity中一款简单易用的对话插件Fungus,它是一个免费的交互式的对话系统。Fungus是Unity免费的一款开源的插件,它可以无代码的实现玩家与NPC之间的对话,并且支持本地化,对相机、Sprite及音乐音效的控制。学会使用该插件就可以做一些对话剧情类的游戏了,还是非常好用的,下面就来学习一下Fungus具体怎么使用吧! 【Unity 实用插件篇】| 使用Fungus插件制作一个对话系统,简单好学易上手一、Fungus介绍

Fungus 的目标是提供一个免费的开源工具,用于在Unity 3D中创建交互式故事游戏。Fungus被设计为易于学习初学者Unity 3D,特别是对于没有编码经验的人。

对于高级用户,它为可视化脚本和交互式故事叙述提供了直观、快速的工作流。Fungus被用来创造视觉小说、点击冒险游戏、儿童故事、隐藏对象游戏、电子学习应用以及一些难以分类的奇怪东西。

Fungus 允许通过直观的可视化脚本系统轻松地将讲故事功能添加到 Unity 游戏中,无需编码。

适合制作视觉小说、角色扮演游戏、隐藏物品、益智游戏和互动小说游戏。基于流程图的人物对话角色对话的国际化。轻松控制精灵、摄像机和音频,帮助讲述您的故事适用于 2D 和 3D Unity 游戏与其他 Unity 代码轻松集成且易于扩展。为更有经验的用户提供强大的 Lua 脚本支持100% 免费和开源

Fungus官方地址:Fungus Fungus官方使用文档:Documentation

插件下载方式:

GitHub下载:github下载地址CSDN资源下载:Unity-Fungus对话插件VX搜我名字,回复【素材资源】免费获取在Unity Assets Store下载导入(目前资源包已下架,之前买过的可以继续使用):Fungus二、Fumgus导入

从上面的几种下载方式将该插件下载到本地之后,将资源包复制到我们的Unity项目即可。

有几种导入形式,分别来简单介绍一下:

如果下载的插件是.unitypackage后缀结尾的文件,那就直接将该文件拖到Unity项目的Preject窗口即可导入。 @图1@图1 如果是从github下载的则是一整个文件目录,此时有两种方案可以选择。 在这里插入图片描述在这里插入图片描述

(a)使用UnityHub加载这个文件夹,直接打开一个该项目在此基础上开发使用。 (b)在下载的文件中复制Fungus这个文件夹,将文件夹复制到Unity项目中,如下图:

在这里插入图片描述在这里插入图片描述

导入后可以在菜单栏中看到一个Tool菜单,说明Fungus插件导入成功,下面就可以学习具体怎样使用该插件了。

在这里插入图片描述在这里插入图片描述三、Fungus功能使用3.1 基础对话效果实现

新建一个空场景,然后点击菜单栏Tools -> Fungus -> Creat -> FlowChat,如图所示:

在这里插入图片描述在这里插入图片描述

此时场景中会多出一个Flowchat游戏对象,点击该对象。

点击Fungus脚本的 Open Flowchat Window 打开对话管理窗口。

在这里插入图片描述在这里插入图片描述

然后打开的窗口中会出现一个New Block,此时点击该Block查看Inspector监视器窗口。

在这里插入图片描述在这里插入图片描述

点击’+',找到 Narrative/Say 进行点击。

在这里插入图片描述在这里插入图片描述

Say就是实现对话内容的地方,我们可以点击该Commands输入对话内容,也可以添加多项内容,如下所示:

在这里插入图片描述在这里插入图片描述

此时可以运行项目查看效果:

请添加图片描述请添加图片描述

这个时候最基础的对话效果就已经实现了,我们通过调整上述Block中的内容就可以添加各种对话。

此处添加Say的地方不止可以实现对话效果,包括添加音乐、动画、位置等各种操作,这个我们后面用到再详细介绍。

默认是游戏第一帧就会运行,我们可以手动添加其他条件触发,比如加个Button点击触发对话。

在这里插入图片描述在这里插入图片描述请添加图片描述请添加图片描述

实现更加复杂的效果需要继续往下看。

3.2 搭建简单场景测试

在场景中简单搭建一个界面方便菜测试使用,如新建一个游戏对象当做玩家,然后再创建两个游戏对象当做npc对话使用。

在这里插入图片描述在这里插入图片描述

并新建一个脚本PlayerController.cs,添加一个简单的玩家移动旋转的功能。 代码如下:

代码语言:javascript复制using UnityEngine; public class PlayerController : MonoBehaviour { [Header("移动速度")] public float movespeed = 5f; [Header("转身速度")] public float turnspeed = 2f; private float hor, ver; void Update() { hor = Input.GetAxis("Horizontal"); ver = Input.GetAxis("Vertical"); //前后移动 transform.position += ver * transform.forward * Time.deltaTime * movespeed; //左右转身 transform.eulerAngles += hor * Vector3.up * turnspeed; } }

在玩家对象身上添加刚体组件Rigidbody,把参数简单修改一下,防止玩家胶囊体歪在路上了~

在这里插入图片描述在这里插入图片描述3.3 触碰 对话

上面讲了怎样触发一个最简单的对话,下面就来添加一个当玩家靠近相关npc时触发对话弹窗的步骤。

首先我们给npc1添加一个球形触发器,用于检测玩家是否进入其触发范围。

在这里插入图片描述在这里插入图片描述

将玩家Player对象添加Tag为Player,全局唯一 方便检测是否为玩家。

然后再新建一个脚本NpcEntity.cs,用于挂载到Npc身上添加一些与玩家相关的逻辑。 代码如下:

代码语言:javascript复制using Fungus; using UnityEngine; public class NpcEntity : MonoBehaviour { [Header("npc名字,需与Block名字一致")] public string npcName; private Flowchart flowchart; private bool canSay; void Start() { flowchart = GameObject.Find("Flowchart").GetComponent(); } private void Update() { //鼠标按下左键触发对话方法 if (Input.GetMouseButtonDown(0)) { Say(); } } void Say() { if (canSay) { if (flowchart.HasBlock(npcName)) { flowchart.ExecuteBlock(npcName); } } } private void OnTriggerEnter(Collider other) { //如果检测到玩家进入触发范围 if (other.tag.Equals("Player")) { canSay = true; } } private void OnTriggerExit(Collider other) { //如果检测到玩家离开触发范围 if (other.tag.Equals("Player")) { canSay = false; } } }

将脚本挂载到场景的Npc1上,并且在对话窗口管理器中将第一个Block改名为npc1,如图:

在这里插入图片描述在这里插入图片描述

Block的名字很重要,每一个Block都代表一个对话流程,且全局唯一不重复。

此时运行游戏查看效果:

请添加图片描述请添加图片描述

可以看到只有玩家进入npc1的触发范围点击鼠标左键才会触发对话,在触发器范围之外是不会触发对话的。

这样就完成了一个简单的触发对话功能。

3.4 条件对话

有的时候我们与某个npc对话时,还会有前提条件。比如在跟npc2对话之前,必须与npc1对话完才可以跟npc2对话。

下面来看一下这个效果怎样实现吧。

首先在场景中给npc2也添加上NpcEntity脚本,并将Name改为npc2,同时别忘记添加触发器。

在这里插入图片描述在这里插入图片描述

然后在对话管理器窗口中右键场创建新的Block并命名为npc2,然后点击’+'添加一个Say对话。

在这里插入图片描述在这里插入图片描述

此时在对话管理器窗口中点击Variables添加一个布尔值变量并改个名字,这个参数我们将用来判断玩家是否与npc1对话过。

在这里插入图片描述在这里插入图片描述

然后点击npc2的Block,在右侧面板上加一个if选项。

在这里插入图片描述在这里插入图片描述

然后点击新加的if对话,将我们刚才创建的布尔变量添加上,如图所示:

在这里插入图片描述在这里插入图片描述

然后还要在npc1的Block对话末尾加一个Set Variable,将我们添加的布尔变量改为true。

在这里插入图片描述在这里插入图片描述

此处的含义就是与npc2对话前要进行判断,当我们加的这个条件(此处条件为我们创建的布尔变量’End_npc1’)满足时,才可以与npc2进行后续的对话。所以与npc1对话后要将该值改为true。

这也是本小节开头说的 前提条件,下面运行看一下效果。

请添加图片描述请添加图片描述3.4 分支 对话

在生活中我们会经常面临着各种选择,比如著名的每日三省吾身:早饭吃什么?午饭吃什么?晚饭吃什么? 那游戏中也如此,总会遇到一些让我们选择的问题,那这个需要进行选择的分支对话要怎么做呢,继续看下面的操作。

在npc2的Block中继续添加节点Menu,添加两个Menu作为对话分支的内容。如下所示:

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

可以看到目前Menu命令里面是报错状态,提示我们没有指定目标Block,这里就需要在对话管理器窗口中右键新建两个Block作为此次分支对话的目标节点,如下所示:

在这里插入图片描述在这里插入图片描述

将两个Menu的TargetBlock分别指向新建的两个Block上,可以看到左侧的npc2的Block也发生了变化,有两个箭头分别指向了后面的npc2_1和npc2_2。

然后我们在后续的两个分支上分别添加一个对话,以达到一个连续对话的功能。

在这里插入图片描述在这里插入图片描述

然后在npc2的末尾添加一个Set Variable,此处将之前加的布尔值参数End_npc1改为Fasle,防止触发分支对话后又重新触发npc2的初始对话。

在这里插入图片描述在这里插入图片描述

此时运行查看效果:

请添加图片描述请添加图片描述3.5 改变对话UI视图

此时我们已经可以给对话添加触发条件和分支对话了,已经算是学会了剧情对话中最常用的功能啦~

但是此时的对话没有名字和肖像图,以至于不知道哪句话分别是谁说的,傻傻分不清楚。

不用担心,Fungus也是提供了此功能让我们可以使用,下面请看具体用法。

点击菜单栏Tools -> Create -> Character,新建两个Character,分别命名为Character_npc1和Character_npc2。

在这里插入图片描述在这里插入图片描述

选中这两个Character_npc对象,在其对应的脚本中改一下对应的名字和颜色。

在这里插入图片描述在这里插入图片描述

记得还要再加一个Character_player代表玩家。

在这里插入图片描述在这里插入图片描述

然后我们在对话管理中找到对话流程,并给每个对话指令添加对应的Character对象。

在这里插入图片描述在这里插入图片描述

此时运行工程,查看具体效果,可以看到对话的上面已经显示是谁在讲话了。

请添加图片描述请添加图片描述

在Character_npc对象上我们也可以添加对应角色的肖像图,如下:

在这里插入图片描述在这里插入图片描述

添加的图片格式为Sprite,可以添加多个肖像图,在具体的对话Block中可选择具体使用哪一张。

在这里插入图片描述在这里插入图片描述

此时再运行工程,可查看添加完肖像图的对话流程。

请添加图片描述请添加图片描述

同样的,不同角色的对话气泡框也可以单独设置。还是找到Character_npc对象身上的Character脚本,有个参数叫Set Say Dialog,单独设置每个Character_npc的该参数就可以实现不同角色不同的对话框气泡了!

如果想直接改变全局的对话框气泡样式,可以找到全局的预制体SayDialog,直接修改此预制体的样式即可修改全局使用的气泡样式。

在这里插入图片描述在这里插入图片描述四、常用功能菜单介绍4.1 Flowchat 窗口

Flowchat 窗口 是我们通过点击 Flowchart游戏对象 身上的 Flowchart脚本 的Open Flowchart Window参数调出来的。

在这里插入图片描述在这里插入图片描述

其作用就是负责整个对话管理器的窗口,在其中可以看到和管理各个Block。

4.2 Block Inspector面板

首先是Flowchat窗口的Block Inspector的参数介绍。

在这里插入图片描述在这里插入图片描述

名称

介绍

Block Name

按钮在Flowchartwindow里的名字

Custom Tint

开启个性化设置,可以自己设置按钮的样式

Description

类似于备注,会显示在按钮下方

execute on event

此节点是通过什么事件触发,如在游戏开始时直接触发、按下某个按键触发等

Commands

节点触发后按顺序执行

4.2 节点Say参数

然后是节点中的Say参数介绍。

在这里插入图片描述在这里插入图片描述

名称

介绍

Character

将对话框绑定到某个角色

Story Text

游戏运行后对话框中显示的内容

Voice Over Clip

设置对话框出现时伴随的音效

Tag Help

点击后展示一些可以在story text中使用的样式,如加粗、斜体、改变字体颜色等

Show Always

该对话指令是否一直都展示。若改为False则可以设置出现的具体次数Show Count

Fade When Done

完成时淡入淡出效果

Wait For Click

是否等待点击。若改为False,怎对话完成后会自动切换下一句话而无需玩家点击

Set Say Dialog

设置对话气泡框。可以改变对话的气泡样式

关于Fungus的每个节点都有不同的参数属性,这里就不一一介绍了,想了解更多参数及使用方法可以参考官方提供的说明文档学习使用。

总结本文介绍了Unity中一个简单易用的 对话插件Fungus,学会该插件就可以制作一些小型的剧情对话游戏啦!由于篇幅原因本文介绍了Fungus中常用的几个功能,还有很多其他功能可以参考官方提供的文档使用。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3