【推荐100个unity插件】对话系统插件——YarnSpinner-Unity插件

最终效果演示

在这里插入图片描述

前言

Yarn Spinner 是一个对话系统,可让您以简单的、类似剧本的格式编写交互式对话,该对话可以加载到您的游戏中并运行。

当对话正在运行时,Yarn Spinner 会发送要显示的游戏对话行 、供玩家选择的选项以及用于在您的场景中发生事情的命令 。

从 Unity Package Manager 进行安装

安装方式其实有很多种,但是我推荐像正常安装来自 Unity Asset Store 中购买的包一样安装 Yarn Spinner

注意:从 OpenUPM 获取插件包要求您的项目使用的最低版本至少为 Unity 2020.1 ,如果您的项目使用更早期的 Unity版本,那么推荐从 Github 安装。

1、添加仓库配置

打开管理界面 Edit/Project Settings/Package Manager

Name:OpenUPM
URL:https//package.openupm.com
Scope(s):dev.yarnspinner

添加仓库配置
在这里插入图片描述

2、安装 Yarn Spinner 包

然后我们可以打开管理界面 Edit/Windows/Package Manager,点击安装在这里插入图片描述

使用实例

1、创建 Yarn Script

在项目窗口右键,菜单中找到 Create -> Yarn Spinner -> Yarn Script, 然后点击创建即可。
在这里插入图片描述

2、创建Yarn Project 文件

我们可以像前面一样通过在项目窗口右键 Create -> Yarn Spinner -> Yarn Project 创建Yarn Project 文件。也可以直接通过的点击前面创建的Yarn Script文件的 Create New Yarn Project... 按钮进行快捷创建。
在这里插入图片描述
新创建的工程文件也会自动地与我们的脚本文件产生绑定。
在这里插入图片描述
Yarn Project 代表一个文本工程,主要用于绑定一系列的 Yarn 脚本,同时也可以配置其他例如本地化、语音等。
在这里插入图片描述
其中,Source Yarn Scripts 表单用以指示该 Project 如何寻找到对应的脚本文件,正常情况下,Yarn Project 会根据该规则在目录下自动索引 Yarn Script 文件。

可以通过以下符号来自定义 Yarn Project 对脚本文件的索引规则。

符号描述示例
*任意文件名“*.yarn” 将匹配任意的 .yarn 文件
**/*所有文件,且包含子目录中的文件**/*.yarn 将匹配本目录包括子目录下的所有 .yarn 文件
..父目录../*.yarn 将匹配父目录下的所有 .yarn 文件

这里如果我们只想关联我们前面创建的NewYarnScript脚本,可以修改为./NewYarnScript.yarn
在这里插入图片描述

3、创建Dialogue System对话系统

在层级窗口,点击创建
在这里插入图片描述
会创建一个预制件,该预制体已经包含一套完整的对话系统,包括UI等。
在这里插入图片描述

4、给Dialogue Runner绑定Yarn Project 数据

在这里插入图片描述

注:Dialogue Runner 是 Yarn Spinner 的管理器组件,该组件负责加载、运行和管理 Yarn Project中的内容,从中读取 Yarn Script,并在游戏时将脚本中的内容传递给其他游戏元素,如GUI等。

5、开启自动启动对话系统并配置开始节点

在这里插入图片描述

6、运行游戏查看效果

在这里插入图片描述
完美运行,是不是很简单?

7、编写 yarn 脚本,自定义对话内容

Yarn Script 即为 Yarn 格式的脚本、或称台本文件,在游戏中的对话内容将主要书写在该文件中。

其实Yarn Spinner 是一种专门为游戏对话设计的脚本语言(类似 Markdown 的语法),用于编写分支对话、条件逻辑和交互叙事内容。它的核心是一个独立于游戏引擎的文本标记语言。它是完全独立的个体。查看文档我们也可以发现,Yarn Spinner不止可以用在unity,还可以用在其他引擎。
在这里插入图片描述
为了让 Yarn 脚本在 Unity 中运行,需要借助 Yarn Spinner Unity 插件。这个插件充当了“桥梁”。

Yarn的语法我就不多介绍了,具体可以查看相关文档,这里我直接写一个例子,如下:

title: Test1
---
Yarn Spinner is a language for writing conversations in games!

For example, here's a choice between some options!

-> Wow, some options!
    You got it, pal!
-> Can I put text inside options?
    You sure can!
    For example, here's some lines inside an option.
    You can even put options inside OTHER options!
    -> Like this!
        Wow!
    -> Or this!
        Incredible!

You can also write 'commands', which represent things that happen in the game!
===

我们可以前往网站:https://try.yarnspinner.dev/,预览我们编写的 Yarn Spinner 脚本对话,点击RUN即可。
在这里插入图片描述
Yarn的语法还是很简单的,聪明如你,相信不需要我过多的解释,你应该都大致懂得如何编写自己的对话了。

8、运行效果

对话的节点名我们修改了,记得要先对应的修改一下Start Node
在这里插入图片描述
运行效果
在这里插入图片描述

9、按键控制

们可以使用 Line Advancer 组件实现用按键操作对话前进。Dialogue System下面默认其实已经有一个子对象添加了该组件了
在这里插入图片描述
这里指space按键控制快进对话,esc按键进入下一行对话。我们可以修改它的参数,实现不同的按钮控制。

10、设置本地化及多语言对话

Yarn ProjectLocalisation 表单就是配置该工程的本地化的。

10.1 给Yarn Scripts添加行标签

默认我们是没有给Yarn Scripts添加行标签的,这是我们需要先点击Add Line Tags to Yarn Scripts按钮即可
在这里插入图片描述
效果,会自动在每行的后面添加一个唯一的标签,这个标签其实可以理解为一个唯一的主键id,用于区分不同行数据
在这里插入图片描述

10.2 将字符串和元数据导出为CSV格式

在这里插入图片描述
导出的csv数据就包含了对话信息,我们给每段对话的后面加上一个new字作为区分,类比另一种语言
在这里插入图片描述
我们修改文件名为Project_en
在这里插入图片描述

10.3 新增一种语言English

在Yarn Project文件新增一种语言English,并配置Strings File为我们前面创建的Project_en对话文本
在这里插入图片描述

10.4 切换语言

Dialogue System新增脚本组件Builtin Localised Line Provider,并绑定到Line Provider参数,用于控制显示哪种对话语言文本,这里切换为我们新建的English:(en)语言。
在这里插入图片描述
如果你想在运行时选择语言,只需要通过代码控制组件Builtin Localised Line Provider的切换即可。

10.5 运行效果

可以看到,对话文本都变成了new文本了
在这里插入图片描述

11、切换音频

配置Yarn Project对应的Assers Folder数据即可,注意音频文件名要和#line标签对应上。
在这里插入图片描述
切换音频和前面多语言类似,也是在Dialogue System新增脚本组件Builtin Localised Line ProviderAsset Locale Code参数就是用于控制显示哪个音频,比如这里切换为English:(en)音频。
在这里插入图片描述


专栏推荐

地址
【unity游戏开发入门到精通——C#篇】
【unity游戏开发入门到精通——unity通用篇】
【unity游戏开发入门到精通——unity3D篇】
【unity游戏开发入门到精通——unity2D篇】
【unity实战】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】
【unity游戏开发——模型篇】
【unity游戏开发——InputSystem】
【unity游戏开发——Animator动画】
【unity游戏开发——UGUI】
【unity游戏开发——联网篇】
【unity游戏开发——优化篇】
【unity游戏开发——shader篇】
【unity游戏开发——编辑器扩展】
【unity游戏开发——热更新】
【unity游戏开发——网络】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述

Unity对话系统是一个轻量级的对话系统和界面,设计用于绑定到任何UI系统。它需要Unity 5.0.0或更高版本。 在Unity中实现对话系统的一种方法是使用VIDE Dialogues (Pro) 2.1。你需要在脚本中引入命名空间using UnityEngine.UI;,并创建相应的游戏对象和文本组件来显示对话内容。你可以使用[TextArea(1,3)]特性来在Inspector窗口中将文字区域显示为三行。对话内容可以存储在一个字符串数组中,并通过索引进行访问。你还可以将对话信息存储在ScriptableObject(SO)中,使用[CreateAssetMenu(fileName ="New Dialogue",menuName ="Dialogue/Dialogue Data")]特性来创建对话数据的菜单选项。对话数据可以存储在一个包含对话片段的列表中。 总之,Unity对话系统是一个可以绑定到任何UI系统的轻量级对话系统,可以通过使用VIDE Dialogues来实现,并且还可以使用ScriptableObject来存储对话数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Unity对话系统源码](https://download.csdn.net/download/nippyli/10143335)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [UNITY 对话系统](https://blog.csdn.net/qq_45783556/article/details/116171371)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Unity3D RPG实现 3 —— 对话、任务系统](https://blog.csdn.net/weixin_43757333/article/details/123287146)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向宇it

创作不易,感谢你的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值