【教程】在Unity中使用YarnSpinner剧情系统

6 小时前
1

【教程】在Unity中使用YarnSpinner剧情系统

最终效果:

让我们开始吧

需要用到的东西:

  • Unity(版本>=2020)

  • 一台八核十六线程的大脑

安装YarnSpinner for Unity插件

从编辑器上方依次打开Edit/Project Settings/Package Manager

点击Scoped Registries栏的+号,填入如下值后点击Apply

Name: OpenUPM

URL https://package.openupm.com

Scope(s): dev.yarnspinner

一定要点击Apply保存

随后打开Window/Package Manager,在上方选择Packages:My Registries,就能看到YarnSpinner了。点击Install安装

使用YarnSpinner

在Project选项卡中右键->Create->YarnSpinner->Yarn Script创建YarnSpinner脚本,我这里取名为test。

随后右键->Create->YarnSpinner->Yarn Project创建YarnSpinner项目,我这里取名为Project。

单击刚刚创建的YarnSpinner脚本,将刚刚创建的YarnSpinner项目赋值给脚本的Project变量。

打开YarnSpinner脚本,让我们编写一些对话:

title: test
---
Dream: Hello,PigGod.
PigGod: Dream,I want to 和你 PVP.
-> OK,Coming Coming
    PigGod: 哇袄袄袄袄袄袄袄袄袄袄袄
-> 不,我要去踩踩背了
    PigGod: Oh Shit.
===

让我们解析上面的代码:

title: test声明了该节点名字是test

Dream: Hello,PigGod.这些是普通的对话,Dream:声明了说话对象

-> OK,Coming Coming这是一个选项,当选择了一个选项后,进入它后面的对话。

现在我们成功创建了一个YarnSpinner对话,来到Hierarchy选项卡,右键->YarnSpinner->Dialogue System创建对话系统。

这个对话系统是YarnSpinner自带的,在Dialogue System对象的Dialogue Runner脚本中可以看到一个Yarn Project变量,将Project赋值给它。

然后在Dialogue Runner的Behaviour部分中勾选Start Automaticall布尔值,StartNode选择test。

运行查看效果,现在Dialogue System应该可以完整地显示刚才编写的对话。

定制外观

这部分最终的结构图:

我们不使用自带的Dialogue System,Create一个Empty GameObject并命名为Dialogue Runner。为它添加Dialogue Runner脚本

将Project赋值给Yarn Project,然后在Dialogue Runner的Behaviour部分中勾选Start Automaticall布尔值,StartNode选择test。

处理对话文本

新建一个GameObject,命名为LineView,添加Line Presenter脚本和Canvas Group脚本。

将LineView的Canvas Group赋值给Line Presenter的Canvas Group变量。

新建两个TextMeshPro,分别命名为LineText和CharacterText,这两个是对话和人物名称的文本。

将LineText赋值给Line Text,CharacterTex赋值给Name field,如上图。

然后开启Use Typewriter Effect,启用打字机效果。

注意:请打开Shows Name,否则将不会显示人物名

然后,将LineView拖入DialogueRunner的DialoguePresenter里

然后你可以弄一个带白色边的矩形框用来当作显示剧情的背景板,最终效果如下图:

处理选项文本

首先我们来制作选项预制体:

创建一个Text-MeshPro,起名为OptionView,为它添加一个Option Item脚本。

这里给出我的OptionItem参数:

然后创建一个Prefab文件夹,把OptionView拖进去,形成一个预制体。

新建一个GameObject,命名为Option List View,添加Options Presenter,Vertical Layout Group和Canvas Group脚本。

这里给出我的脚本参数:

Option View Prefab直接把刚刚创建的OptionView预制体拖进去就行了。

然后,将Option List View拖入DialogueRunner的DialoguePresenter里

处理用户输入

创建新GameObject,命名为Line Advancer

然后为它添加Line Advancer脚本。

这里给出我的脚本参数:

这些参数的意思是:按Z快进此行或执行下一行对话。

然后,将Line Advancer拖入DialogueRunner的DialoguePresenter里

最后你就能得到下面的效果了。

Bye bye~

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...