关于对话框优化核心
相关插件
插件本体:
◆Drill_CoreOfDialog 对话框 - 对话框优化核心
相关子插件:
◆Drill_DialogNameBox 对话框 - 姓名框窗口
对话框优化核心需要基于 窗口字符核心 才能运行。
并且专门针对对话框,进行窗口字符功能强化。
默认对话框 由于底层结构,不能直接支持窗口字符。对话框优化核心 改进了底层结构,已支持窗口字符。 |
对话框
基础功能
基础功能在示例中 对话框管理层 中都有介绍。
你可以去示例中看看。
核心功能
1)原理介绍
介绍功能前,先回顾一下什么是 逐个绘制 。 |
文本域:是指绘制窗口字符的区域,文本域具有高度和宽度。
字符如果越出了边界,则会被遮挡。
文本光标:文本域中确定下一个字符位置的竖线。(有时候简称“光标”)
每绘制一个新的字符,光标都会前进到下一个位置,并且光标可以换行。
字符绘制: 每输入一个字符,光标就能向前移动。
常规情况下,绘制所有字符的过程,都在一瞬间内完成。
逐个绘制: 每隔几帧时间,绘制下一个字符,直到绘制完全部字符。
由于绘制有时间差,所以需要实时控制绘制,因此性能消耗也比一次性绘制要大的多。
字符绘制 是一瞬间绘制完毕。
逐个绘制 是一个时间段内,多次绘制。
2)结构组成
对话框主要基于 逐个绘制 功能,然后在此基础上,扩展了很多额外功能。 |
对话框的逐个绘制: 专门针对对话框的逐个绘制功能。
对话框在执行 逐个绘制 期间:
》绘制结束前,会持续阻塞事件指令。
》绘制时,可以控制脸图。
》绘制时,可以加窗口字符,要求跳行、等待几帧时间、等待玩家输入。
》绘制结束后,会等待用户按键输入,只有按下确定键后,才执行下一条事件指令。
》……
总的来说,对话框是一个多个功能组合的形态,如下。
对话框 = 逐个绘制 + 指令阻塞 + 子窗口管理 + 脸图管理 + 按键管理
也正是由于 默认对话框 的功能太多太杂,
所以才会分离成 窗口字符核心 和 对话框优化核心 。
以确保其它插件都能支持 逐个绘制,而不会被 对话框 独占。
如果不加 窗口字符核心,默认底层只有对话框才能进行逐个绘制。现在基于 窗口字符核心,各类子插件的文本域都可以支持 逐个绘制 功能了。 |
默认对话框 由于底层结构,不能直接支持窗口字符。对话框优化核心 改进了底层结构,已支持窗口字符。 |
3)对话框与窗口字符
窗口字符类型分为:** 常规字符 、表达式 、 指代字符 、 效果字符 、 消息输入字符** 。
各类窗口字符在 窗口字符核心、字符绘制核心 中的关系如下图。
由图可知,逐个绘制 与 消息输入字符 密切相关,
而对话框属于逐个绘制的一种情况,专门针对对话框的逐个绘制。
子窗口
对话框包含下面的子窗口。
1)金钱窗口
该窗口使用窗口字符:“\$”调出,能够在右上角显示出来。
2)选择项窗口
该窗口通过事件指令:【信息】>【显示选项…】调出。
3)数字输入窗口
该窗口通过事件指令:【信息】>【数值输入处理…】调出。
4)物品选择窗口
该窗口通过事件指令:【信息】>【物品选择处理…】调出。
5)姓名框窗口
该窗口需要姓名框窗口插件支持,使用窗口字符:“\dDNB[名称]”显示出姓名窗口。
Drill_DialogNameBox 对话框 - 姓名框窗口
脸图管理
脸图 - 实时切换
示例中,介绍了实时切换脸图的方法。
使用如下窗口字符即可。
脸图 - 局限性
按照绘制规则,脸图无法做成动图。
因此只能在 逐个绘制 过程中,
去掉之前的脸图,然后重新画上新脸图,用于表现表情变化。
脸图 - 资源管理
使用窗口字符“\fc[资源名:1]”可以切换任意的固定头像。
但是如果是与 角色 相关的头像,比如“\fa[5:0]”。
那么要注意表情分配,如下图,角色只能配置一个脸图资源。
这个对应的资源,只有8个表情可以分配。
以量子妹为例,分成下图的固定的喜怒哀乐。
举个例子,假设队伍中有三个人,量子妹、珍妮、伦琴。如果有这样一段剧情,玩家领队会在一个集市里,尝尝草莓,结果草莓是坏的,悲伤。那么,“玩家领队”,量子妹、珍妮、伦琴三人都可能会成为领队。这时候,播放对话框的内容,就需要播放“\fp[1:0]”的头像。而悲伤,就对应了头像“\fp[1:6]”。(八个表情为0~7的编号)实际效果可以去看看示例。![]() |
按键管理
按键 - 长按加速
游戏默认机制中,一直按住确定键,地图界面会加速,默认为两倍速。
你可以用下面的插件能够对其进一步控制:
◆Drill_LayerRunningSpeed 地图 - 长按加速控制
插件指令如下。
长按加速,不仅能加速对话框,还能加速地图界面的所有事件。 |
按键 - 连按立即显示
连按立即显示: 即对话框被打开后,字符会一个一个显示,如果这时再按一次确定键,那么当前对话页内的全部剩余文本,会立即显示出来。
但如果剩余文本中,遇到了等待字符,则会停下。
【对话框 - 对话加速键】
插件提供了对话框加速的功能。
◆Drill_DialogMessageFastSkip 对话框 - 对话加速键
对话加速键: 对话框播放时,按住该键,能够快速跳过所有对话框的对话。
(默认加速键即 ”下一页”逻辑按键,即W键或S键)
你也可以通过插件指令手动开关对话加速键的功能。
并且前面提及的 按键 - 连按立即显示 ,也能通过插件指令控制开启关闭。
由于对话加速键跳的速度太快了,你可以考虑这样设计:
玩家一周目时,关闭对话加速键,玩家二周目以后,启用对话加速键。
加速键有很多类似的插件,这些被整合到:“1.系统 > 关于输入设备核心(高级篇).docx ”的 所有加速键 章节。 |