对话系统Odin插件_第二章
整一个枚举,是用来
继续,整一个对话事件数据 首先是事件的枚举选择,然后是事件对应的参数
注意一下,命名空间
然后,继续加一个序列化的玩家选择类 就是游戏内,玩家的选项,其中包含选项的文本显示,还有对应的事件列表
对话相关的数据类都定义好了 回到游戏管理类,整一个检测对话数据配置的工具
也是先确认命名空间
拿到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角色的同一套 也是直接遍历,然后通过前面实例化出来的单例,调用事件触发就好