本文为孤月蓝风编写,转载请注明出处: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

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

  1. Unity插件-NGUI使用教程

    Unity插件-NGUI使用教程 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 NGUI 一款强大的次 ...

  2. 《图说VR入门》——Unity插件DK2使用教程

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/53339254 作者:car ...

  3. Unity插件-ShareSDK使用指南

    Unity插件ShareSDK使用教程 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Summariz ...

  4. 【Unity插件】LitJson杂谈

    距离上一次更新博客已有一段时间了,一实习就懒了,嘿嘿.这次谈一下在实习里新碰到的一个Unity插件--LitJson(也可以去官网下载最新版). 开场白 LitJson是一个开源项目,比较小巧轻便,安 ...

  5. Egret3D学习笔记一 (Unity插件使用)

    一 官方教程: http://developer.egret.com/cn/github/egret-docs/Engine3D/getStarted/getStarted/index.html 大部 ...

  6. Unity插件之Unity调用C#编译的DLL

    Unity插件分为两种:托管插件(Managed Plugins)和本地插件(Native Plugins).本文先来说说Unity中的托管插件,本地插件的文章留到下一篇文章再说. 有时候我们会有这样 ...

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

    原文地址: Sublime Text 2安装汉化破解.插件包安装教程_百度经验 http://jingyan.baidu.com/article/ff4116259b057c12e48237b8.ht ...

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

    依据 Unity插件之NGUI学习(2),创建一个UI Root,在UI Root下创建一个Texture作为背景图,并设置图片,在Wiget下调整大小:然后在UI Root下再创建一个Panel. ...

  9. Unity 4.3 2D 教程:新手上路

    这篇文章译自 Christopher LaPollo 先生的 Unity 4.3 2D 教程的第一部分 Unity 4.3 2D Tutorial: Getting Started 感谢这套优秀教程的 ...

随机推荐

  1. BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 4142  Solved: 1964[Submit][Statu ...

  2. “.Net 社区虚拟大会”(dotnetConf) 2016 Day 1 Keynote: Scott Hunter

    “.Net 社区虚拟大会”(dotnetConf) 2016 今天凌晨在Channel9 上召开,在Scott Hunter的30分钟的 Keynote上没有特别的亮点,所讲内容都是 微软“.Net社 ...

  3. Linux scp 设置nohup后台运行

    Linux scp 设置nohup后台运行 1.正常执行scp命令 2.输入ctrl + z 暂停任务 3.bg将其放入后台 4.disown -h 将这个作业忽略HUP信号 5.测试会话中断,任务继 ...

  4. JavaScript 字符串实用常操纪要

    JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...

  5. fiddler发送post请求

    1.指定为 post 请求,输入 url Content-Type: application/x-www-form-urlencoded;charset=utf-8 request body中的参数格 ...

  6. 对Thoughtworks的有趣笔试题实践

    记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...

  7. 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~

    最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...

  8. 2016/12/30_Python

    今天主要学习内容: Python: 1.字典的使用 1)怎么创建字典 dicts = {"name":"juncx","age":17} d ...

  9. class-dump 反编译私有的库和应用

    一.下载并安装class-dump 下载class-dump-3.5.dmg  点击下载 下载完成以后双击.dmg的文件,将里面的class-dump拷贝到/usr/local/bin 设置权限chm ...

  10. 仿陌陌的ios客户端+服务端源码项目

    软件功能:模仿陌陌客户端,功能很相似,注册.登陆.上传照片.浏览照片.浏览查找附近会员.关注.取消关注.聊天.语音和文字聊天,还有拼车和搭车的功能,支持微博分享和查找好友. 后台是php+mysql, ...