Unity插件之plyGame教程:DiaQ对话系统

本文为孤月蓝风编写,转载请注明出处:http://fengyu.name/?cat=game&id=296

DiaQ是plyGame旗下的一款对话及任务系统。拥有可视化的对话及任务编辑器,能够很方便的处理对话及任务。但是官方文档却不给力,经过一般研究,终于会使用简单的对话系统了,分享给大家。

首先,你需要安装DiaQ插件,DiaQ有单独的,同时也被包含于plyGame中,至于哪里有的“卖”,请使用伟大的搜索引擎。

在安装DiaQ插件后,菜单栏的Windows中会出现DiaQ的菜单,Tools中会有PL Young菜单,下面会有DiaQ。

我们打开DiaGraphs编辑器,Tools > PL Young > DiaQ > Graph Editor。

图标从左到右依次为:增加、删除、向上移、向下移、修改名称、打开任务编辑器、设置、帮助文档。

我们点击增加,列表中增加一项,之后我们就可以在右边的窗口中创建对话及流程了。选中左侧列表中的一个对话,右边最上方会出现和左边一样的工具条。

从左到右依次为:条件判断、发送消息(SendMessage事件)、设置变量值、等待、调试、任务奖励、完成任务、任务状态、对话。

这一篇中,我们只讲最后一个:对话。

点击对话图标,会在下面视图中创建一个对话框,单机选中对话框,在Unity的Inspector面板中,会显示当前对话框的各种属性。

Dialogure Text:对话内容

Responses:对话选项,例如,NPC询问你是否接受任务,可以回答“接受”和“拒绝”,每一个选项一行,点击右侧的加号添加

Linked Quest:连接到任务

Id:当前对话框的ID

Custom Ident:当前对话的自定义ID,类型为string字符串

Comment:用于对话编辑器中显示的备注信息,用于说明次对话用途,只在编辑器中显示,对话中不显示

Show in Graph:上面的备注信息是否显示在编辑器中

Node MetaData:对话传递的数据,可以在这里传递各种类型的数据,供下一条对话使用

现在,你可以随便创建几个对话内容,并将它们连接起来。你可以点击箭头,会出现连接线,再点击需要连接的对话,两个对话框就会被线连接起来。

在所有对话的内容完成之后,你会在 Assets / plyData / DiaQ 文件夹中看到有一个DiaQ的Prefab,将它添加进游戏场景中。

接下来我们写对话的代码。

首先,你需要:

using plyCommon;
using DiaQ;

其次,我们需要声明一个变量,用于保存获取到的对话内容:

private plyGraph conversation = null;

然后在Start中,获取对话内容(这里你可以通过IdentName两种方式获取,自由选择):

conversation = DiaQEngine.Instance.graphManager.GetGraphByIdent(dialogureID.ToString());

之后,所有的对话,都是在GUI中显示,所以代码均写在OnGUI中:

//判断当前是否有对话正在进行
if (DiaQEngine.Instance.graphManager.ActiveGraph() == null)
{
    //没有对话进行则开始对话
    DiaQEngine.Instance.graphManager.BeginGraph(conversation);
}
else
{
    //获取对话节点
    DiaQNode_Dlg dlg = DiaQEngine.Instance.graphManager.NodeWaitingForData() as DiaQNode_Dlg;
    //如果节点不为null,则调用内容
    if (dlg != null)
    {
        //获取对话内容,并赋值
        string _text = dlg.dialogueText;
        Rect dialogbox = new Rect(0,0,300,300);
        GUI.Box(dialogbox, _text);
        //获取选项数量,并循环所有选项,将选项用按钮输出
        _choicesCount = dlg.responses.Length;
        for (int i = 0; i < _choicesCount; i++)
        {
            //dlg.responses[i]为选项的内容文字
            if (GUI.Button(new Rect(0, i * 45), 100, 50), dlg.responses[i]))
            {
                //根据选项跳转到下一个相连的对话
                DiaQEngine.Instance.graphManager.SendDataToNode(i);
            }
        }
    }
}

这样,我们完整的创建并调用了使用DiaQ制作的对话。

本文为孤月蓝风编写,转载请注明出处:http://fengyu.name/?cat=game&id=296

时间: 2024-08-26 02:44:28

Unity插件之plyGame教程:DiaQ对话系统的相关文章

Unity插件之-ITween教程1

ITween的官网 http://itween.pixelplacement.com/index.php ITween的官方提供了3种插件,一种是ITween,一个是ITween的各种粒子,最后一个就是ITween的扩展

Unity 通过Unity Admob Plugin插件集成admob教程

原创:officemaster.cn 下载Unity Admob Demo,插件里面包含Admob_Unity_Demo.unitypackage 插件文件AdmobPluginRes  是Admob 的ios sdk和插件使用样例代码打开样例代码可以看到代码里面如何使用Unity Admob插件 把Admob Unity插件添加进unity工程1. 打开Unity工程2. 从菜单打开,Assets -> Import Package -> Custom Package.3. 选中Unity插

Unity插件之NGUI学习(4)—— 创建UI2DSprite动画

创建一个新的Scene,并按 Unity插件之NGUI学习(2)创建UI Root,并在UI Root的Camera下创建一个Panel. 然后在选中Panel,在菜单中选择NGUI->Create->Unity 2D Sprite 查看Inspector窗口 接着是在Unity中制作Sprite: 在Project窗口创建Textures文件夹,并从外部拖入一些图片素材,然后选中需要转成Sprite的图片,然后在Inspector窗口进行转变Sprite的操作,如图. 选择Sprite(2D

apklug插件托管服务开发教程之按条件查询云端插件-01

以一个简单的输出程序为例: #include<iostream> #include<cstring> #include<cstdio> using namespace std; class point { public: int a,b,c; }; point p; void fuc() { for(int i=1;i<=10;++i) { ++p.a; ++p.b; ++p.c; cout<<p.a<<' '<<p.b<

Unity插件之NGUI学习(9)—— Tween和世界坐标系尺寸转换为NGUI尺寸

在游戏中,有一种比较常见的动画效果,就是产生得分后,分数会在游戏中显示,并快速移动到总分的位置并使之相加.今天我就打算使用NGUI的Tween来制作这种分数动画效果. 根据 Unity插件之NGUI学习(2),创建一个UI Root,然后使用NGUI创建一个Label和一个Button. 在Project窗口中,在Resources/Prefabs文件夹中创建一个Prefab,该Prefab就是一个NGUI的Label,然后在菜单中选择NGUI->Tween->Rotation和NGUI-&g

Unity 4.3 2D 教程:推开大门

这篇文章译自 Christopher LaPollo 先生的 Unity 4.3 2D 教程的第一部分 Unity 4.3 2D Tutorial: Getting Started 感谢这套优秀教程的作者@Chris!译者水平有限,翻译不准确的地方请参考原文,文中所有Unity的关键字都没有翻译. 译者@wangzexi,转载请保留出处和原文链接.   如果你尝试用更早版本的Unity来制作2D游戏,那当然没问题,但你也知道必须先解决一些问题. 可能你通过给quad应用纹理,使用脚本调整纹理参数

【VR】Leap Motion 官网文档 Unity插件概述

前言: Leap Motion的官网文档已经有不少的热心网友参与了翻译,但没有覆盖官网文档的全部. 为迎合Unity VR的热潮与大家的学习需要,本博客将推出针对Unity方向的官方文档翻译系列. 本篇主要对Leap Motion的Unity插件及坐标系系统进行简述. 英文原文网址:https://developer.leapmotion.com/documentation/unity/unity/Unity_Overview.html 译文首发&持续更新:http://blog.csdn.ne

Sublime Text 2安装汉化破解、插件包安装教程

Sublime Text 2安装汉化破解.插件包安装教程 听语音 | 浏览:41326 | 更新:2014-04-04 20:43 1 2 3 4 5 6 7 分步阅读 Sublime Text作为一款轻量.简洁.高效.跨平台的编辑器.支持N多种语言,受工程师所爱!这里教大家如何安装破解Sublime Text 2.0.2,并教大家如何安装包控制器(package control)和安装插件(Emmet.SublimeLinter.jQuery等插件) 工具/原料 Sublime Text 2.

Unity插件之NGUI学习(7)—— ScrollView(Panel)

今天介绍的ScrollView,參考的是NGUI(3.6.8)中的Example项目:Scroll View(Panel). 先依照Unity插件之NGUI学习(2)创建一个UI Root.然后在UI Root以下创建一个Scroll View,选择菜单NGUI->Create->Scroll View 然后在Inspector窗体做一些參数设置 Movement设置滚动Vertical纵向或者horizontal横向. Scroll Bars能够加入纵向或者横向的滚动栏控件(在这个项目中暂且