关于窗口字符底层全更新说明(v3.70)
该文档于2024/11开始编写,对应发布版本为v3.70,如果你是基于之后版本的插件,可以无视此文档。 |
需要更新的插件
核心插件:
Drill_CoreOfCharDraw [v1.0] 系统 - 字符绘制核心
Drill_CoreOfWindowCharacter [v2.0] 窗口字符 - 窗口字符核心
Drill_CoreOfWindowCharacterSprite [v1.0] 窗口字符 - 窗口字符贴图核心
Drill_CoreOfDialog [v1.0] 对话框 - 对话框优化核心
Drill_CoreOfWindowAuxiliary [v2.2] 系统 - 窗口辅助核心
主要子插件:
Drill_CoreOfColor [v1.8] 窗口字符 - 颜色核心
Drill_ActorTextColor [v2.1] UI - 角色文本颜色
Drill_EnemyTextColor [v2.3] UI - 敌人文本颜色
Drill_ItemTextColor [v2.5] UI - 物品+技能文本颜色
Drill_ItemTextFilter [v1.2] UI - 物品+技能文本的滤镜效果
Drill_CoreOfString [v1.3] 系统 - 字符串核心
Drill_DialogCharBackground [v1.0] 窗口字符 - 字符块的背景
Drill_DialogCharContinuedEffect [v1.4] 窗口字符 - 字符块的持续动作效果
Drill_DialogTextBigImage [v1.4] 窗口字符 - 大图片字符
Drill_DialogCharDisplayData [v1.0] 窗口字符 - 常用的指代字符
Drill_DialogMessageSpeed [v1.2] 窗口字符 - 逐个绘制的播放速度
Drill_DialogCharCursor [v1.0] 窗口字符 - 逐个绘制的文本光标
Drill_DialogNameBox [v1.2] 对话框 - 姓名框窗口
Drill_DialogChoiceButton [v1.3] 对话框 - 对话选项按钮组
Drill_DialogMessageFastSkip [v1.1] 对话框 - 对话加速键
Drill_DialogSingleSprite [v1.1] 对话框 - 简易对话图
Drill_DialogSkin [v1.6] 对话框 - 对话框皮肤
Drill_DialogArrow [v1.3] 对话框 - 对话框小箭头
相关子插件:
(系统-滚轴核心,改名为:窗口字符-长画布贴图核心 )
Drill_CoreOfScreenRoller [v1.3] 窗口字符 - 长画布贴图核心
Drill_SceneCredits [v1.3] 标题 - 制作组
Drill_SceneSelfplateE、F [v1.2] 面板 - 全自定义信息面板E、F
Drill_SceneSelfplateA、B [v2.7] 面板 - 全自定义信息面板A、B
Drill_SceneSelfplateC、D [v2.5] 面板 - 全自定义信息面板C、D
Drill_SceneSelfplateG、H [v2.0] 面板 - 全自定义信息面板G、H
Drill_SceneSelfplateI、J [v1.7] 面板 - 全自定义信息面板I、J
Drill_SceneSelfplateK、L [v1.8] 面板 - 全自定义信息面板K、L
Drill_SceneSelfplateM、N [v1.5] 面板 - 全自定义信息面板M、N
Drill_SceneGalleryA、B [v1.3] 面板 - 全自定义画廊A、B
Drill_SceneGalleryC、D [v1.4] 面板 - 全自定义画廊C、D
Drill_SceneShop [v2.2] 面板 - 全自定义商店界面
Drill_SceneLimitedShop [v1.6] 面板 - 限量商店
Drill_MiniPlateForState [v2.8] 鼠标 - 状态和buff说明窗口
Drill_MiniPlateForEvent [v2.3] 鼠标 - 事件说明窗口
Drill_MiniPlateForPicture [v2.0] 鼠标 - 图片说明窗口
Drill_MiniPlateForChar [v1.4] 鼠标 - 字符块的说明窗口
Drill_SceneMain [v1.9] 面板 - 全自定义主菜单面板
Drill_TitleScene [v1.7] 标题 - 全自定义标题界面
Drill_CoreOfSelectableButton [v1.8] 系统 - 按钮组核心
Drill_MenuBackButton [v1.5] 主菜单 - 返回按钮
Drill_X_SceneShopDiscount [v1.5] 控件 - 商店节假日的折扣[扩展]
Drill_AssetsOfCurrency [v1.2] 管理器 - 货币素材库
Drill_EventText [v2.6] 行走图 - 事件漂浮文字
Drill_BattleFloatingPermanentText [v1.6] 战斗UI - 永久漂浮文字
Drill_BattleFloatingTemporaryText [v1.6] 战斗UI - 临时漂浮文字
Drill_GaugeFloatingPermanentText [v1.7] 地图UI - 永久漂浮文字
Drill_GaugeFloatingTemporaryText [v1.7] 地图UI - 临时漂浮文字
Drill_GaugeFloatingTreasureHud [v1.3] 地图UI - 临时漂浮物品框
Drill_GaugeFloatingTreasurePopup [v1.3] 地图UI - 临时漂浮物品信息
Drill_GaugeFloatingMessage [v1.3] 地图UI - 临时漂浮消息
Drill_GaugeFloatingVideoBarrage [v1.2] 地图UI - 临时漂浮视频弹幕
Drill_CoreOfActionSequence [v1.9] 系统 - GIF动画序列核心
Drill_CoreOfInput [v2.1] 系统 - 输入设备核心
Drill_OperateKeys [v2.0] 键盘 - 键盘手柄按键修改器
Drill_EventBufferVariables [v1.4] 物体管理 - 事件的缓存变量值
Drill_EventBufferSwitches [v1.1] 物体管理 - 事件的缓存开关值
该插件介绍文本的对齐方式,
包括横向左对齐、居中、右对齐;纵向顶部对齐、居中、底部对齐。
插件底层变化说明
原插件结构的底层关系如下图。
原插件结构中,所有子插件都需要 窗口辅助核心+窗口字符核心 。并且YEP消息核心冲突会造成很多取舍的麻烦。 |
现插件结构如下图。
窗口辅助核心被分离了出去,大部分子插件不再强制需要 窗口辅助核心。并且 窗口字符核心 拆分成:字符绘制核心、窗口字符核心、窗口字符贴图核心、对话框优化核心现在除了 对话框优化核心 与YEP冲突,其它插件都不冲突了。 |
快速批量更新插件的方法
1)备份工程
注意,这次窗口字符底层改动非常大,更新前先备份工程,备份工程,备份工程。
2)打开小工具
打开小工具插件信息查看器。
3)读取工程
选择示例工程,也可以是你自己的工程,点击读取。
4)找到插件更新器
点击“其它功能”选项卡,点击“插件更新器”按钮。
5)浏览对应工程
注意填写“含新插件的工程”和“被更新的工程”。
6)列表勾选
以旧版本的工程的更新为例,插件情况如下图。
勾选可升级项。
7)执行更新
点击执行更新即可。(注意,文件覆盖后无法找回,记得先备份工程)
更新执行后,可能会卡顿一段时间,这时候不要强行关闭软件哦。
8)测试游戏
这时候,进入游戏测试。
可以马上看见缺少 字符绘制核心。
由于窗口字符核心分离成了多个核心插件,所以需要添加新的核心插件。更新器不会将没引用的插件放入文件夹,所以 字符绘制核心插件 你要自己手动加。 |
如果无视一大堆插件的关联,继续进入游戏,
你会发现标题的 按钮组 没有绘制任何文本,所以看不见按钮。
添加 字符绘制核心插件 后,
就是缺少 窗口字符贴图核心 ,这个也要手动加一下。
还有,长画布贴图核心,需要换一下位置,往后放。
(这个插件改了作用范围)
核心插件改好后,就能正常进入游戏了。
9)常见问题
进入游戏后,能看见最常见的问题,
就是大量窗口字符失效,出现了大量"\d"。
因为这次更新全是窗口字符底层,所以很多窗口字符也修改了配置指令,如果窗口字符没有相关插件解析,会被作为普通文本全部显示出来。 |
图中的 ”\dDCEE[使用方法:预设[4]]” 更新后应写为:
”\dDCCE[4]\dts[使用方法]\dDCCE[off]”。 (具体去看对应的插件)
原构造是把 字符块与插件配置紧密合并,但分离了 窗口字符贴图核心 后,字符块用“\dts[]”单独管理,所以动态效果只相当于给 ”\dts[]” 字符块添加新的样式,可以与其他插件样式叠加,所以才这样设计。
为什么要推翻
1)底层太差劲
原mv的窗口字符非常浪费性能,需要绘制两次才能实现功能。
还不如直接基于h5绘制系统,提前解析字符,将 解析和绘制过程 完全分开。
另外,如果新写的窗口字符不生效,在mv中显示的是下图这个样子。
正则表达式在一开始就没设计好,也不方便继承函数、覆写函数。
2)维护成本太高
作者我被 字符大小、行高设置 出现的各种bug弄烦了,无法维护。
(行走图显示窗口框架,窗口会被抬高)
3.62和以前的版本,都有这个问题,一直没能解决。
这个问题,还衍生出了:
》只要修改字体大小,行高分布、自动换行会乱。
》使用部分窗口字符时,会吞字。
》全自定义面板中,翻页会导致 字符 绘制的位置不唯一,反复抖动。
3)我要加新功能
![]() |
比如作者我想在 图片上写文字,这在rmmv默认底层里面不能实现。
比如作者我想实现对每行行高的绝对控制,这在rmmv默认底层里面不能实现。
比如作者我想实现图片+文字嵌套,这在rmmv默认底层里面不能实现。
综上所述,所以要推翻原底层的结构。