Skip to content

关于对话框优化核心

相关插件

插件本体:

◆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”的 所有加速键 章节。

贡献者

暂无相关贡献者

页面历史

暂无最近变更历史