Unity有哪些让做项目事半功倍的插件值得推荐?
作者:卡卷网发布时间:2025-01-07 17:02浏览数量:105次评论数量:0次
本文介绍一款自研unity插件,实现对话框功能,名字dialogo,购链接如下,目前打折15dollar,原价30dollar。
,这里主要介绍下插件的实现与功能。
Introduction
插件名,dialogo.主要提供游戏对话功能支持,目前支持任意unity版本,任意渲染管线,2d,2.5d,3d全部支持。
代码全部c#,提供源代码,可以自由编辑,二次开发,只需遵守unity的EULA协议即可。
为何要针对对话框功能需要实现插件?如果全部在unity的Oject里不仅麻烦,修改困难,而且编辑十分不方便。该插件是script-ased的,也就是对话内容全部在一个脚本里完成。无需启动unity即可编辑,十分方便,同时已经内含了将脚本转换为unity资产的脚本,也就是作者只需要把自己的脚本拖入到unity的project里就可以直接使用了。
Components:
DLSL:
本插件包含一个作者自创的domainspecificlanguage,名字也叫dialogo,目前提供了vscode插件,名字也叫dialogo.下面截取一个代码片段:
详细介绍在插件链接的视频里有,大概意思就是描述对话的内容,发起对话的人名,以及提供无限嵌套条件语句的支持。
如:Wilt是一个游戏的角色的名字,这个对话就是通过这个角色触发。触发之后的对话内容在花括号内部。内部的对话内容也有相应的角色,如这里对话可能由游戏中的npc:Wilt触发,然后对话的内容是Wilt和Emma之间的对话,对话的内容是用双引号括起来的部分。
同时支持条件语句,类似rust的match,但是省略了match关键字:
("sprite"){Emma("plsgivemeasprite")Wilt("Thisisyosprite!")}
这一句是一个条件分支,对应"sprite",也就是用户在对话时可以选择sprite,然后对话就继续花括号里面的内容,这个条件是可以无限嵌套,条件内部可以继续分支条件。
正式的插件包里包含该语言的完整的Parser(PEGParser,参考python创始人GuidovanRossum的博客实现)。
该parser是用unity的c#实现的,一开始用的c++,并且也可以成功集成到unity的c#,但是因为跨平台困难后续全部改为了c#版本。
parser解析之后会构成一语法树,然后进一步形成一个类似字节码的格式,最后结果存储在类DialogGame里面。
DialogPlugin.
这个类是一个单例模式,同时也是一个观察者模式的Suject,同时内部包含一个状态机,对应的观察者是DialogTrigger.
该类既然是单例了,就是控制整个对话框的进行流程,如遇到npc触发对话,同时按下空格切换对话内容等,以及条件分支的选择触发逻辑。
它内部包含了DialogParser和DialogGame.以及本身是一个状态机来控制对话框执行逻辑,同时负责和ui部分交互。
DialogTrigger.
这个类是作为脚本attach到游戏创作者的npc上的,每个需要支持对话触发功能的npc就attach一个这个脚本。
然后通过触发TriggerDialogoEvent来触发对话框执行,之后的执行会自动转到DialogPlugin来控制。
同时它可以支持注册一些定义的回调函数,也可以自己扩展回调函数。如MessageCompleteDelegate,这个在每一消息结尾的时候触发。
Ui:
该插件提供了一套对话框的缺省ui实现,插件使用者可以直接使用,同时这部分ui是可以替换到,ui严格来说可以不算插件的一部分,插件使用者可以参考该缺省ui的实现来实现自己的ui
ui基本就是unity自带的intece的实现,它和插件交互基本方法就是注册回调函数,然后从回调函数拿到解析出来的脚本信息并显示或者做任何想做的事情。
这个实现是较灵活的,使用者可以根据自己的需求选择如何使用对话内容数据,如可以用不同的格式显示,甚至可以显示当前对话进行到源代码的哪一部分了。(有那么点调试器的味道,但是不支持断点)。总之做什么都可以。
插件的cardimage如下:
当然这个图主要是做coverimage用到,并非实际实现的效果,但是也大差不差,具体使用效果见插件包的链接。
models:
插件内部免费赠送用magicVoxel做到一个体素模型。同时作者还有一个控制台的对话框模拟器实现,不过这个没有来的及放到插件里,购者如果需要作者可以免费提供。
Conclusion:
这个插件的优点如下:代码较紧凑,模块化清晰,功能针对性较强,侧重于基础功能,同时支持扩展。
要说瑕疵也不是没有,就是dlsl这个语言本身的语法还可以继续优化,或者扩展。目前支持场景切换,线性对话以及无限嵌套分支选择。不过不支持跨场景的分支切换以及场景本身的分支,同时也不支持类似for循环的逻辑。
适合单故事线的游戏,未来根据使用者的数量和反响考虑提供进一步的功能支持。
该插件本身已经包含所有源码,读者只需遵守unity的eula协议即可。作者本人将提供长期。欢迎购试用。
全部资金用于再生产。
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
- 上一篇:以太网是什么鬼?
- 下一篇:VisualStudio到底好在哪?
相关推荐

你 发表评论:
欢迎