小红帽想跟奶奶说话,然後把苹果送给奶奶。2D游戏经常利用对话推进剧情,进行玩家互动,是角色扮演游戏的精随。这几天要来练习制作简单的对话系统,说话头像+名字+内容,并且可以按下一步阅读下一段落文字。
利用MVC(Model–view–controller)模式设计,将管理数据、图像显示与控制流程分开,使後续对程序的修改简化,也易於扩充对话内容。
Model管理资源,角色、对话内容、图片等等元件。
View负责显示,接收处理过的数据,传送至UI显示。
Controller功能逻辑,负责处理数据,像是处理文本、文字断句划分。
用这样的分工架构来完成对话系统,好处是分工明确,维护容易,较不混乱。
1.角色资讯:角色.name、表情、头像阵列.img[]、头像位置sprite.pos(头像分左右边)
2.对话文本:使用时机(条件)、内容.txt,文档格式注意要UTF-8。
//举例
对话一(条件:第一次见到奶奶).txt
小红帽:奶奶好。
奶奶:好啊好啊。
小红帽:奶奶我前阵子去了日本,买了很高级的苹果。
奶奶:乖孙乖孙。
对话二(条件:小红帽身上苹果不足).txt
小红帽:阿奶奶,我忘记带苹果了。
奶奶:......好吧,奶奶不饿。
玩家接近奶奶,按下对话建启动对话,用canvas(GUI)展示对话内容。
1.接收对话数据,得知对话者与对话内容
2.抓取对话者相关资讯(头像、表情)
3.用canvas显示
4.接收「下一步」指令触发事件
1.侦测事件,触发事件後,用条件决定要读取哪一段文本
2.读取.txt档,获得字串或字元阵列
3.分析文件,处理字串或字元阵列,透过关键字或特殊符号进行分段,得到对话者与对话内容
4.传送处理後的文件资讯(已分段的对话和名字)到GUI
扩充功能,如果有空再来思考~
目前unity已经发展得很成熟,github或社群之中已经有很多写好的资源可以使用,现成的对话系统很多,现成对於制作游戏来说很方便,推荐去寻找好用的对话系统,节省时间也是控制开发成本的一环唷!
>>: [Day11] 2D的数学世界 (三) - 位移、旋转、缩放
接着来讲讲常用的物件导向一些基本概念.... 封装 可能你知道套件函式名称,但不知道里面是什麽就叫封...
根据官方文件给的方法上传 https://firebase.google.com/docs/stor...
小技巧:ul>li*3 打出来 可以用emmet快速做出 昨日疑问:我的HTML为何没有快速工...
978. Longest Turbulent Subarray https://leetcode.c...
先欢迎各位来到整体难度最高的领域 在听这里之前 前面的逆向组语要先学好 还有对 OS 以及计算机概论...