21.unity简易对话介面设计概念

对话系统(dialogueSystem)

计画

小红帽想跟奶奶说话,然後把苹果送给奶奶。2D游戏经常利用对话推进剧情,进行玩家互动,是角色扮演游戏的精随。这几天要来练习制作简单的对话系统,说话头像+名字+内容,并且可以按下一步阅读下一段落文字。

设计模式

利用MVC(Model–view–controller)模式设计,将管理数据、图像显示与控制流程分开,使後续对程序的修改简化,也易於扩充对话内容。

Model(管理资源)–view(负责显示)–controller(功能逻辑)

Model管理资源,角色、对话内容、图片等等元件。

View负责显示,接收处理过的数据,传送至UI显示。

Controller功能逻辑,负责处理数据,像是处理文本、文字断句划分。

用这样的分工架构来完成对话系统,好处是分工明确,维护容易,较不混乱。


Model(负责管理角色数据、对话文本)

1.角色资讯:角色.name、表情、头像阵列.img[]、头像位置sprite.pos(头像分左右边)
2.对话文本:使用时机(条件)、内容.txt,文档格式注意要UTF-8。

//举例
对话一(条件:第一次见到奶奶).txt

小红帽:奶奶好。
奶奶:好啊好啊。
小红帽:奶奶我前阵子去了日本,买了很高级的苹果。
奶奶:乖孙乖孙。

对话二(条件:小红帽身上苹果不足).txt
小红帽:阿奶奶,我忘记带苹果了。
奶奶:......好吧,奶奶不饿。

View(负责显示资料给玩家)

玩家接近奶奶,按下对话建启动对话,用canvas(GUI)展示对话内容。

1.接收对话数据,得知对话者与对话内容
2.抓取对话者相关资讯(头像、表情)
3.用canvas显示
4.接收「下一步」指令触发事件

图片失效

Controller(负责文件处理、文字分段、功能实现、传递变数)

1.侦测事件,触发事件後,用条件决定要读取哪一段文本
2.读取.txt档,获得字串或字元阵列
3.分析文件,处理字串或字元阵列,透过关键字或特殊符号进行分段,得到对话者与对话内容
4.传送处理後的文件资讯(已分段的对话和名字)到GUI

其他延伸

扩充功能,如果有空再来思考~

  • 玩家输入自己的名字,自动代入至对话系统
  • 自动读取、抓取文件、自动更新
  • 系统完整封装

结语

目前unity已经发展得很成熟,github或社群之中已经有很多写好的资源可以使用,现成的对话系统很多,现成对於制作游戏来说很方便,推荐去寻找好用的对话系统,节省时间也是控制开发成本的一环唷!


<<:  软件开发後的成效追踪方式

>>:  [Day11] 2D的数学世界 (三) - 位移、旋转、缩放

ASP.NET MVC 从入门到放弃 (Day7) -C#物件导向介绍(封装 继承 多型

接着来讲讲常用的物件导向一些基本概念.... 封装 可能你知道套件函式名称,但不知道里面是什麽就叫封...

IOS、Python自学心得30天 Day-28 上传图片到Firebase Storage

根据官方文件给的方法上传 https://firebase.google.com/docs/stor...

前端工程学习日记第三天

小技巧:ul>li*3 打出来 可以用emmet快速做出 昨日疑问:我的HTML为何没有快速工...

LeetCode解题 Day15

978. Longest Turbulent Subarray https://leetcode.c...

Day 27 - Pwn 0x1

先欢迎各位来到整体难度最高的领域 在听这里之前 前面的逆向组语要先学好 还有对 OS 以及计算机概论...