【零基础】【Fungus首个中文教程】10分钟快速构建Unity中的万能对话系统 / 叙事系统 / 剧情系统

我真的很久没有写过一个完整的攻略了(笑),咸鱼了很久之后还是想来写一个好玩的。这次主要是梳理一下Unity的小众插件Fungus的核心功能,并且快速掌握其使用方法。

官方文档:http://fungusdocs.snozbot.com/

视频教程:https://www.youtube.com/watch?v=9zqUx0xZBv4

那么首先Fungus是什么呢?Fungus提供了一个交互式的界面,快速构建一个对话系统,甚至是文字游戏(AVG)的核心组件。

Fungus在Unity 3D项目中,主要是做剧情讲述部分,故我主要是阐述Fungus怎么做好一个剧情阐述。

一,怎么创建一个叙述?场景开始时的故事阐述

首先我们打开一个Unity项目,当然我手上是有一个项目的,目前正在参加Imagine Cup 2018.

首先我们在Tools里找到Fungus。事先我们需要在Unity的Assets Store里安装这个插件。

创建一个Flowchart。这样我们可以发现左边的树里已经多了一项Flowchart。

接下来我们打开Fungus的Flowchart窗口。

然后会出现一个这样的界面:

接下来我们点一下这个Block,为它改名为“StartStory”,然后将触发条件设为“GameStart”。

接下来为这个Block添加一些内容。

我们选择“+”,然后选择narrative里的say,添加一个新的叙述。

如果需要多段叙述,可以继续添加不同的块。

到现在我们都没有看见一行代码,是不是非常简洁?

二,对话系统开放!Character与Menu

一直到刚才我讲的都是单线叙事,现在我引入一个概念:Character。

接下来我们建立一个叫做boy的人物。

我们可以为人物指定一个Portrait(肖像),实现类似下图的效果:

如图操作:

现在有了一个Character之后,我们的对话就可以指定角色来区分了。

当然还有一个加快速度的剧情添加办法:Narrative > Conversation。

然后将剧情以这样的方式添加:[character] [portrait] [position] [hide] [<<< | >>>]: [Dialogue text]

示例:

john bored left: Oh, so that‘s how you use the Conversation command.

sherlock eyeroll right: Yes, well done John.

You catch on quickly don‘t you?

hide john "offscreen left": I sure do.

-- This is a comment, it doesn‘t appear in the conversation

john angry middle: Wait, what!

left: There‘s no need to be rude Sherlock!

bored: Not like that would stop you.

sherlock excited: AHA! So that‘s how you do a conversation from Lua!

Fascinating.

john <<<: Yes, riveting.

john hide:

sherlock hide:

接下来就能顺利展开剧情了。

接下来是一个重要功能:Menu。Menu可以为我们做出剧情走向,即根据选择跳转到不同的Block。

首先我们做一个简单的对话选择支:答题系统。

首先我们在Block后创建四个Menu:

然后再新建几个新的Block,将Menu的target指向新的Block。

这样就可以实现一个对话分支了。

请看答题系统的Fungus实现:

最后就可以形成一个对话树结构。

三,触发式对话

当然我们知道,一个正常的人物对话其实应该是触发式展开的。比如说你走近一个人,就开始自动对话,或者是按下键,就自动对话。

这里提供一个简单的触发式解决办法,当然这不是唯一的解决办法:

1,首先我们给人物加一个Collider,Box Collider即可。

这里最好让Collider不碰到任何其他物体。

同时注意,我们还要创建另一个Collider来保证人物不被穿过。这个时候可以用Sphere Collider。

2,我们勾选触发器,isTrigger选项。

然后在这个人物这里新建一个C#脚本,编辑触发器函数:

这里的Message类似一个信号,当我们触发了这个Collider之后,广播了一个信号,我暂且取名为majorTask1.

同时我们将block的触发条件设置为”Message Received“。

这样我们就可以设置成触发式对话了。

=================================

这是我们正在开发的独立游戏:《无尽音海》音乐跑酷+探索城市。目前正在开发阶段。

原文地址:https://www.cnblogs.com/ldzhangyx/p/8720168.html

时间: 2024-11-07 13:45:14

【零基础】【Fungus首个中文教程】10分钟快速构建Unity中的万能对话系统 / 叙事系统 / 剧情系统的相关文章

10分钟快速构建汽车零售看板

此文已由作者王文开授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 要说整车厂的核心业务是什么,说白了就是两个:一个是造车,一个是卖车:我今天想来聊一聊卖车,也就是整车厂的销售业务. 目前中国的汽车销售模式都是通过经销商的(暂时不考虑那些垂直的汽车电商,不是本文的重点),普通的个人客户是没法直接向整车厂订购车辆,都是通过4S店的渠道进行购买:这也就是说整车厂需要先把车卖给经销商(批售),经销商再把车卖给个人客户(零售):对于整车厂来说,前者相当于是整车批售,后者就是整车零

2019刘老师教你用springboot2.x开发整合微信支付的线上教育平台带源码送springboot2.x零基础入门到高级实战教程

第一部分:springboot2.x零基础入门到高级实战教程一.零基础快速入门SpringBoot2.0 1.SpringBoot2.x课程全套介绍和高手系列知识点 简介:介绍SpringBoot2.x课程大纲章节 java基础,jdk环境,maven基础 2.SpringBoot2.x依赖环境和版本新特性说明 简介:讲解新版本依赖环境和springboot2新特性概述 3.快速创建SpringBoot2.x应用之手工创建web应用 简介:使用Maven手工创建SpringBoot2.x应用 4

Android零基础入门第30节:两分钟掌握FrameLayout帧布局

原文:Android零基础入门第30节:两分钟掌握FrameLayout帧布局 前面学习了线性布局.相对布局.表格布局,那么本期来学习第四种布局--FrameLayout帧布局. 一.认识FrameLayout 帧布局是Android布局中最简单的一种,使用FrameLayout标签. 帧布局为每个加入其中的控件创建一个空白区域(称为一帧,每个控件占据一 帧).釆用帧布局方式设计界面时,只能在屏幕左上角显示一个控件,如果添加多个控件,这些控件会按照顺序在屏幕的左上角重叠显示. 下表显示了 Fra

微信小程序详细图文教程-10分钟完成微信小程序开发部署发布(3元获取腾讯云服务器带小程序支持系统)

很多朋友都认为微信小程序申请.部署.发布很难,需要很长时间. 实际上,微信和腾讯云同是腾讯产品,已经提供了10分钟(根据准备资源情况,已完成小程序申请认证)完成小程序开发.部署.发布的方式.当然,实现的是基础功能.但是,可以给学习者很便捷的体验和很好的启发. 不过,随着微信平台和云服务的发展,真担心,程序猿会失业! 目录 一.微信小程序申请 二.服务器设置(申请.部署.域名) 1.申请服务器 2.部署服务器 3.域名申请和配置 三.小程序发布 1.下载DEMO 2.下载开发工具并安装 3.配置参

Expression Blend实例中文教程(10) - 缓冲动画快速入门Easing

随着Rich Internet application(RIA)应用技术的发展,各个公司越来越注重于项目的用户体验性,在保证其功能完善,运行稳定的基础上,绚丽的UI和人性化的操作设计会给用户带来舒适的体验效果.前文我们学习了Blend设计简单的动画,可以使用StoryBoard快速创建一个动画效果,但是该动画效果看起来缺乏自然效果,让用户感觉太过机械化,大大的降低了用户体验性.为了是动画更为人性化,看起来更自然化,我们可以通过以下两个方式来解决: 方法1. 使用前文所提及的,帧动画技术,为了是动

零基础入门—网站建站教程

1. 服务器选择 不同网站类型需要的服务器配置不同,首先确认网站规模与访问人数,一般情况下,小型网站只需要选择基础配置即可.购买服务器流程可参考通过购买页面创建一台ECS实例. 想了解不同配置对应的价格,推荐使用ECS价格计算器. 云服务器ECS主要计费方式为预付(包括包年包月和按周付费)和按量付费,详细的计费规则可以参考产品计价. 阿里云1000元大礼包 2. 域名购买和备案 域名购买:输入想要的域名,未被占用即可注册,具体操作请参考域名注册流程.域名后缀通常为.COM或.CN,其它后缀介绍和

蓝丝雨零基础学习按键精灵VIP教程合集

课程目录:1.初识按键精灵2.标识符和关键字3.变量4.变量的作用域5.常量6.数据类型7.强制转换类型8.运算符与表达式19.运算符与表达式210.运算符优先级11.键盘命令12.鼠标移动13.鼠标单击14.获取鼠标位置15.得到鼠标特征码16.如果命令17.如果否则语句18.颜色判断语句19.条件选择语句20.For循环语句21.DoLoop循环语句22.WhileWend循环语句23.跳转语句和中断命令24.子程序25.参数的真正意义与使用技巧26.函数27.数组28.随机数29.冒泡算法

Python-EEG工具库MNE中文教程(10)-信号空间投影SSP数学原理

目录 projector(投影)和投影背景 案例解释投影原理 导入工具库 什么是projector(投影)? 计算正交平面 使用SVD计算投影矩阵 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区(微信号:Brain_Computer).QQ交流群:903290195 projector(投影)和投影背景 projector(投影)(简称proj),也称为信号空间投影(SSP),定义了应用于空间上的EEG或MEG数据的线性操作. 可以将该操作看做是一个矩阵乘法,通过将数据投影到较低维度的

Expression Blend实例中文教程(2) - 界面快速入门

上一篇主要介绍Expression系列产品,另外概述了Blend的强大功能,本篇将用Blend 3创建一个新Silverlight项目,通过创建的过程,对Blend进行快速入门学习. 在开始使用Blend前,首先需要进行Silverlight的开发环境搭建,在银光中国网(SilverlightChina.Net)有篇"轻松建立Silverlight开发环境",其中列出了建立Silverlight开发环境的几个步骤,另外,我在过去发布过一篇"Silverlight开发工具集合&