整一个枚举,是用来

继续,整一个对话事件数据 首先是事件的枚举选择,然后是事件对应的参数

注意一下,命名空间

然后,继续加一个序列化的玩家选择类 就是游戏内,玩家的选项,其中包含选项的文本显示,还有对应的事件列表

对话相关的数据类都定义好了 回到游戏管理类,整一个检测对话数据配置的工具

也是先确认命名空间

拿到Resources目录下的所有挂载了DialogConf脚本的数组 然后,遍历对话数据配置文件,如果NPC配置数据为空,或者头像为空,就打印报错提示

运行,相关log也是正常显示的

尝试移除配置

重新运行,报错提示也是正常的

在游戏管理类,外部也声明一个配置数组

在Awake函数里,对他完成初始化,也是调用Resources目录下的所有DialogConf配置文件

再写一个获取函数

在对话的主窗体,先声明一个当前的对话配置,还有当前的索引

之前还写漏了名字的ui文本声明,也加一下

在Start函数获取Text文本组件

开始整一个开始对话的函数体,传参是对话的配置文件,还有对话的序号索引

重温之前定义好的对话事件枚举,一共是四个

所以就对应了三个事件方法: 1、触发下一条对话,就是索引+1,然后继续调用开始对话的函数 2、退出对话,直接打印log就好 3、跳转对话,也是通过传参,设定好索引值,然后调用开始对话函数就好

4、屏幕效果的函数,之前已经写好了,就是协程实现,红色闪烁一下,然后又变回白色

整一个跳转不同事件的函数:其中跳转对话的,传参是整型数据,跳转到屏幕效果的函数,传参是浮点数据,因为屏幕效果的显示时间,这个是比较动态变化的,不一定就是整数

简单介绍一下,选项类的代码实现,因为是涉及到按钮点击,所以除了mono之外,还继承了这些

这里就是进入ui触发的颜色变化

继续,先声明一个玩家选择的对象

需要对初始化函数,做一下处理,先注释

改造一下初始化函数,传参改成是传递玩家选择DialogPlayerSelect 文本显示,改成是调用model的Content选项文本

再补充一句代码,对玩家选择完成赋值

回到对话主窗体,完善开始对话逻辑 注掉默认的协程,先设置一下使用的当前对话配置,和当前索引 然后,调用一下开始对话的具体逻辑实现;

回到对话数据模型类,增加俩label,分别是npc对应的事件触发,还有玩家选项

NPC对话主窗体,完善开始对话的具体逻辑 首先拿到当前索引的对话数据模型本体,然后修改npc头像图标,还有npc名字文本; 然后,调用协程让npc开始说话,其中的传参,也是通过对话数据模型的Content拿到的

然后,在对话主窗体,遍历其中的npc事件队列,完成传参,触发事件逻辑

删除已有的玩家选项,然后遍历数据模型包含的玩家选项,实例化出来最新的玩家可操作对话选项,完成初始化

需要注意的是,这个实例化的模版,也是Resource目录下对应的

玩家点击选项,相关的触发事件逻辑,也是用的,跟NPC角色的同一套 也是直接遍历,然后通过前面实例化出来的单例,调用事件触发就好