Skip to content

关于窗口字符

相关插件

核心插件:

◆Drill_CoreOfCharDraw 系统 - 字符绘制核心

◆Drill_CoreOfWindowCharacter 窗口字符 - 窗口字符核心

◆Drill_CoreOfWindowCharacterSprite 窗口字符 - 窗口字符贴图核心

相关子插件:

◆Drill_DialogTextAlign 窗口字符 - 文本居中

◆Drill_DialogTextBigImage 窗口字符 - 大图片字符

◆Drill_DialogFontFace 窗口字符 - 字体管理器

◆Drill_DialogCharContinuedEffect 窗口字符 - 字符块持续动作效果

……

窗口字符是一个较大的生态结构,你几乎能在所有窗口中,都添加窗口字符。

你可以结合示例中的 窗口字符管理层 了解各个功能。

也可以去看看:”23.窗口字符 > 关于窗口字符表.docx”。

如果你是从其他文档中 要求 来看此文档的,那么去过目一遍章节:窗口字符基础 ,非常重要。

名词索引

以下你可以按住ctrl键点击下面的词,可以直接定位到想了解的名词:

基础绘制原理 文本域 文本光标静态绘制 定时重绘窗口字符常规字符表达式指代字符效果字符消息输入字符
功能-窗口字符光标偏移 加粗与倾斜全局默认值 全重置字符常规换行/手动换行/自动换行字符排版/DEBUG 范围盒/内边距临时文字+效果字符 永久文字+指代字符不生效的窗口字符
功能-窗口字符贴图字符块/字符块贴图贴图的翻转 贴图的内边距
功能-逐个绘制逐个绘制原理消息输入字符 对话框与逐个绘制
功能-子插件【文本居中】 【行高控制器】

插件关系

插件之间关系如下,所有用到 窗口字符 的插件,都基于窗口字符核心。

基础

基础 - 字符绘制(原理)

1)文本域和文本光标(原理)

文本域:是指绘制窗口字符的区域,文本域具有高度和宽度。

字符如果越出了边界,则会被遮挡。

文本光标:文本域中确定下一个字符位置的竖线。(有时候简称”光标”)

每绘制一个新的字符,光标都会前进到下一个位置,并且光标可以换行。

问: 系统是怎么将 字符(数据) 绘制在一个 贴图/窗口/画布(图像) 上的?答: 在图像上划分一个矩形区域作为文本域,然后在文本域的光标位置上,一个一个地进行字体像素转换(栅格化),每转换一次,光标前进一次,以此实现全部字符的绘制。字符绘制有先后,但绘制字符的整个过程都在一瞬间执行完毕。(看不懂上述文字没关系,后面会继续介绍)

2)绘制过程(原理)

你可以把 贴图/窗口/画布 看成一个记事本,

记事本里面有 文本域和文本光标

每输入一个字符,光标就能向前移动。

如果我输入一个图标\i[4],那么就会变成下图。

(记事本并不能真的放图片,这里只是举例。)

如果我按一下回车键(换行符\n),那么就换行。

以上,我们可以总结出一些简单的结论:

1.窗口字符必须绘制在文本域中,每个字符的位置与光标有关系。

2.字符可以换行,但需要遇到换行符才换行,且换行位置与文本域相关。

3.每个字符都有宽度,这个宽度由字符自己决定,图标字符也占宽度。

3)字符的方框(原理)

基于前面得出的结论,

每个字符都会占用一定的宽度和高度,这相当于一个个方框;

绘制一个字符,就相当于占用了一个方框。

示例 窗口字符管理层 中,介绍了窗口字符的底层:字符绘制核心。

该核心提供的debug查看,可以让你看见每个字符的方框。

图中可以看到,每个字符的方框大小都不一样。

一个中文字符不一定等于两个空格的宽度,具体要看字体类型、字体大小的影响。

光标每前进一次,前进的宽度就是上一个字符的宽度。注意,如果没有遇到换行符,则光标会无限前进下去。即使超出了文本域的边界,光标也不知道。
为了解决光标无限前进的问题,从而诞生出了自动换行的功能。自动换行在后面章节:常规换行/手动换行/自动换行 。这里先不着急去看,先继续往下看。

4)变化与重绘(原理)

基于文本域和文本光标的原理,

绘制一次之后,这些文字就永远留在文本域中了。

静态绘制: 指游戏中 窗口/贴图/画布 中,只进行一次性的文本绘制。

如果让光标归位再写一次,则前一次和后一次的字符像素会叠加在一起。

就好比你有一张纸和一支笔,但是没有橡皮擦。

但是,游戏中经常会出现 动态变化数据,比如 \v[1] 变量值。有时候 \v[1] 的值是1,有时候 \v[1] 的值是2。如果只绘制一次,那么这个值就不会刷新了,怎么办?这时候就要考虑定时重绘。

定时重绘: 指游戏中 窗口/贴图/画布 中,每隔一段时间,清空并重绘一遍文本。

通过这种方式能应对 静态绘制不刷新 的问题。

举个例子:

◆Drill_PictureAdditionalTextArea 图片 - 图片附加的文本域

该插件可以将文本绘制在图片上,并且提供了 自动刷新 的功能,

开启定时重绘,

就能实现 \v[1] 的实时变化了,如下图 0变成400。

基础 - 为什么要用窗口字符

前面章节介绍了 文本域文本光标绘制原理 ,我们知道了:》系统是将字符一个一个绘制出来的。》每个字符都有宽度和高度,光标依靠宽度前进,但不能自动换行。》静态绘制是一次性绘制,但如果要显示动态的数据,只能定时重绘。接下来,回到了最初的问题,我们为什么要用窗口字符呢?

下面用一句话举例。

文本1:小爱丽丝打开木质宝箱,获得了能量宝石和1000金币。

文本2:小爱丽丝打开木质宝箱,获得了 能量宝石 和 1000金币 。

文本3:小爱丽丝打开木质宝箱,获得了 能量宝石x1 和 金币x1000 。

从文本1到文本3的转变,我们可以看出,明显文本3的解释,比文本1的要好。

为什么?因为文本3突出了玩家想看见的东西。

这还只是纯文本。

但作者我有了新想法,为了进一步突出玩家想看见的东西,于是考虑加颜色。

文本4:小爱丽丝打开木质宝箱,获得了 能量宝石x1 和 金币x1000 。

但按照前面最原始的绘制流程,绘制过程中突然改变画笔的颜色,是几乎不可能的。

而且,程序也不知道什么时候应该变颜色。

为了解决变色问题,窗口字符的定义就出现了。

如果绘制过程中,遇到了\c[24]就变成绿色,如果遇到了\c[0]就恢复默认色。

于是,编辑器写的文本:

小爱丽丝打开木质宝箱,获得了 能量宝石\c[24]x1\c[0] 和 金币\c[24]x1000\c[0] 。

实际效果文本:

小爱丽丝打开木质宝箱,获得了 能量宝石x1 和 金币x1000 。

然后,作者我又有了新想法。

文本5:小爱丽丝打开木质宝箱,获得了 能量宝石x1 和 金币x1000 。

然后,作者我又有了新想法。

文本6:小爱丽丝打开木质宝箱,获得了 能量宝石x1 和 金币x1000 。

然后,作者我又有了新想法。

文本7:小爱丽丝打开木质宝箱,获得了 能量宝石x1 和 金币x1000 。

然后,作者我又有了新想法。

……

是时候出手了,

我的想法源源不断,但是默认程序它支持不了那么多想法。

为了兼容全部,我要设计超级复杂完备的窗口字符。

你们对新底层的力量一无所知

复杂的窗口字符,可以是下面这种程度。

仔细看其实并不难看懂,只是这字符写的又臭又长而已。

基础 - 窗口字符的类型

在看各种各样的窗口字符前,先了解一下,窗口字符分成哪几大类。

窗口字符: 即绘制在 贴图/窗口/画布 中的字符。

并不是所有窗口字符 绘制的结果 都一样,它们根据自身的情况,

分为:常规字符表达式指代字符效果字符消息输入字符

最新的插件功能使用强大的底层,

已经能让 窗口字符 绘制在 贴图 上面,窗口字符已经不需要 “窗口” 二字了。

但由于这个名词已存在很长的时间,所以也没必要换。

各类窗口字符在 窗口字符核心、字符绘制核心 中的关系如下图。

1)窗口字符 - 常规字符

常规字符:常规绘制的字符。

即在编辑文本中显示的字符,在游戏中一模一样显示输出。

2)窗口字符 - 表达式

表达式: 能识别”<xxx>“格式的字符串,并将其转成其它的字符。

表达式的优先级最高,最先执行文本处理。

窗口字符的转换/生效顺序如下:表达式 > 指代字符 > 效果字符 > 消息输入字符

比如,下图的表达式转换效果。

<复制:2:文本>,能将 “文本” 复制2次并输出。

<复制:\\v\[47\]:文本>,能将 “文本” 复制变量47值的次数并输出。

3)窗口字符 - 指代字符

指代字符:能识别”\xxx”或”\xxx[]”格式的字符串,并将其转成其它的字符。

比如数字的值、名称等。同样是转成其它字符,指代字符的优先级比表达式要低。

前面介绍的复制表达式,就会优先将指代字符复制多次,复制后才转成名称、值等。

指代字符的嵌套:一般特指”\xxx[\v[21]]”的写法,即某个变量的指代。

比如我们知道”\c[2]”表示颜色2,那么”\c[\v[21]]”就表示 变量21值的颜色。

常用的有”\v[\v[21]]”表示变量值的变量、”\str[\v[21]]”表示变量值的字符串。

所有指代字符都需要留意一下刷新情况,如果指代字符的值发生了变化,那么文本需要 重新绘制。可以去看看前面章节:变化与重绘

4)窗口字符 - 效果字符

效果字符:能识别”\xxx”或”\xxx[]”格式的字符串,并实现特定效果的字符。

比如修改颜色、缩放、绘制图标等。

大部分效果字符都不会被绘制出来,而是会影响后面绘制的文本样式。

5)窗口字符 - 消息输入字符

消息输入字符:能识别”\xxx”或”\xxx[]”格式的字符串,只在 逐个绘制 过程中生效的功能,比如等待、实时切换脸图功能。

注意,前面介绍的 文本域和文本光标 ,整个流程都是在一瞬间绘制完毕的。

而消息输入字符,额外增强了功能,

通过两套完全不同的文本绘制流程,使得字符具有时间延时效果。

但这样是有代价的,

因此只能在一些特定的地方才能支持 消息输入字符,大部分情况都不支持,不生效。

基础 - 窗口字符的结构

前面章节的介绍,可以知道:》表达式、指代字符、效果字符、消息输入字符 有优先级的划分。》效果字符一般只改样式,不会被绘制出来。》消息输入字符走的是另一套绘制流程,并非一瞬间绘制完毕。接下来,介绍一下窗口字符各个类型的架构处理顺序。

1)优先级

一次性绘制时,上述类型转换顺序如下。

表达式 > 指代字符 > 效果字符

比如,\c[\v[21]],会先将 \v[21] 转成对应的数字,然后再转 \c[]。

逐个绘制时,上述类型转换顺序如下。

表达式 > 指代字符 > 效果字符/消息输入字符

消息输入字符和效果字符的优先级相互交叉,具体要在游戏中试了才知道哪个先转换。不过一遍情况下这两种字符相互不会嵌套。

2)底层字符

原mv的窗口字符非常浪费性能,需要绘制两次才能实现功能。

还不如直接基于h5绘制系统,提前解析字符,将 解析和绘制过程 完全分开。

这也是为什么出现了新的核心插件:

◆Drill_CoreOfCharDraw 系统 - 字符绘制核心

这个插件直接管理底层的h5绘制系统。

3)字符块/字符块贴图

前面介绍了窗口字符的类型。

分为:表达式指代字符效果字符消息输入字符

这些类型经过多次转换,最终都会转变为 常规字符

但字符块不一样,字符块是一个在文本域中的贴图。

字符块: 即多个常规字符打包成一组,并在文本域中生成一个贴图。

比如用”\dts[一组字符]”,可以打包成字符块。

字符块贴图: 即多个常规字符打包后,形成的贴图对象。

字符块和字符块贴图是一个意思。

字符块有个好处,就是因为它是一组文本的贴图,因此能够进行贴图的各种高级变化。

比如 加背景、设置贴图动作效果 等。

详细可以见后面章节:功能 - 窗口字符贴图

4)窗口字符表

最初列窗口字符表时,没那么多窗口字符。

但现在窗口字符的数量,非常非常非常多了,通过普通查询不方便找。

建议使用小工具:插件信息查看器

不过你也可以直接去查表:”23.窗口字符 > 关于窗口字符表.docx”。

功能 - 窗口字符

你需要先了解 窗口字符基础 ,如果没看,不要急着往下翻。

光标偏移

1)位置影响

效果字符 \px[10] 和 \py[10] 可以将设置当前的光标偏移一段距离。

偏移的单位为像素,且偏移位置可以填负数。

如下图,设置了 \px[50]\py[18] ,

即表示光标左移50像素(绿色线),下移18像素(青色线)。

后面打出的字符,就是下图的情况。

此偏移对后面的所有文本都有效。但如果后面文本遇到了 全重置字符\fr 或者 \px[0]\py[0] ,则偏移量会归零。

2)重叠影响

如果光标偏移字符写在中间,比如”1234\px[50]abcd”,可以造成”断开”的情况。

但是,如果这时候再用 \px[0] 归零偏移量,

那么后面绘制的字符,会与前面绘制的字符相互重叠。

使用负向移动\px[-20],也一样能造成重叠情况。

3)光标偏移与行高

窗口字符核心 提供的 光标偏移 功能如下。

窗口字符描述
\px[]临时偏移量X,正数向右,负数向左。
\py[]临时偏移量Y,正数向下,负数向上。

注意,\py[]只是临时偏移位置,并不会影响实际行高。

因为\py[10]会使得后面所有文本都临时向下偏移10像素,所以看起来像改变了行高。

但设置\py[0]或者重置字符\fr后,就又还原为行高的位置了。

所以你才能看见\py[]设置偏移后,字符能叠加在一起的情况。

(行高相关功能,可以去看看文档:”23.窗口字符 > 关于行高控制器.docx”)

加粗与倾斜

窗口字符核心提供了字体加粗和字体倾斜功能。

(其它效果字符可以去看看:”23.窗口字符 > 关于窗口字符表.docx”)

全局默认值

全局默认值: 指所有贴图/窗口,开始绘制文本时使用的默认样式值。

比如 默认字体大小、默认字体类型、默认描边设置、默认颜色 等。

全局默认值主要都在子插件中配置,如下图。

你还可以通过插件指令永久修改全局默认值。

具体需要去看看相关子插件提供的”全局默认值”配置。

注意,全局默认值修改之后,真的会在所有地方都生效,比如修改文本颜色为绿色,那么所有绘制文本的地方全都默认为绿色。(角色名、物品名、菜单按钮、面板内容、战斗文本全部绿色)

全重置字符

全重置字符: 指能重置所有样式的字符”\fr”。

注意,重置的是所有样式,如下表。

重置项等同的字符描述来自插件
偏移量\px[0]、\py[0]重置后,偏移量清零Drill_CoreOfWindowCharacter窗口字符 - 窗口字符核心
文本颜色\cc[reset]重置后,文本颜色恢复为 全局默认值(见子插件功能 ☆重置控制)Drill_CoreOfColor窗口字符 - 颜色核心
字体加粗\fb[off]重置后,关闭加粗Drill_CoreOfWindowCharacter窗口字符 - 窗口字符核心
字体倾斜\fi[off]重置后,关闭倾斜Drill_CoreOfWindowCharacter窗口字符 - 窗口字符核心
字体大小\fs[28]重置后,字体大小恢复为 全局默认值(见子插件功能 ☆重置控制)Drill_DialogSpecialCharSize窗口字符 - 字符大小控制器
字体类型\ff[GameFont]重置后,字体类型恢复为 全局默认值(见子插件功能 ☆重置控制)Drill_DialogFontFace窗口字符 - 字体管理器
对齐方式不重置不重置(居中、右对齐)(纵向居中、纵向底部对齐)Drill_DialogTextAlign窗口字符 - 文本居中
描边\dDCOB[reset]重置后,描边恢复为 全局默认值(见子插件功能 ☆重置控制)Drill_DialogCharOuterBorder窗口字符 - 描边效果
外发光\dDCOG[reset]重置后,外发光恢复为 全局默认值(见子插件功能 ☆重置控制)Drill_DialogCharOuterGlow窗口字符 - 外发光效果

常规换行/手动换行/自动换行

1)常规换行

通常按一个回车键,就是一个换行符,如下图。

而实际上,这个回车键有个别名,叫”\n”。

编辑器中你看见的是 “测试的文本(换行)测试的文本”,

而实际上程序存储的是 “测试的文本\n测试的文本”。

如果编辑器的编辑框无法按回车换行,你可以尝试手动输入”\n”,说不定能实现换行。(不一定有效,但可以试试)

2)自动换行

自动换行: 表达式为<WordWrap>,在文本任意位置添加都有效。

可使得当前所有文本,都根据情况自动换行。

自动换行能省略很多工作量,如果使用常规换行,则需要反复开游戏测试来看文本排布。

另外注意,自动换行会去掉所有常规换行符”\n”,

然后根据去掉”\n”后剩下的字符,进行从左往右方框规划位置,如下图。

3)手动换行

手动换行: 表达式为
,属于强制换行。

手动换行能实现换行效果如下:

并且,手动换行能在自动换行的基础上,仍然强制换行。

可以看到下图中既有”\n”又有

如果不开自动换行,”\n”和
会多空出两行;

但自动换行开启后,”\n”和
只空出了一行;

说明常规换行”\n” 全部被去掉了,但是
的换行仍然有效。

此处介绍比较粗略,建议你自己直接上手先试着做一下,去看看”16.图片 > 关于图片附加的文本域.docx”的设计章节,就能很容易明白了。

字符排版/DEBUG

窗口字符提供了”\debug”测试用的字符,如下。

窗口字符描述
\debug[显示字符方框]之后的文本显示字符方框
\debug[隐藏字符方框]之后的文本取消显示字符方框
\debug[显示单行标线]之后的文本显示单行标线
\debug[隐藏单行标线]之后的文本取消显示单行标线
\debug[显示范围盒]该字符出现在任意位置都有效,显示范围盒
\debug[隐藏范围盒]该字符与"显示范围盒"同时存在时,最后一个生效

以这些字符用于辅助排版查看,如下图。

字符的排版与设计,主要与行高、字体大小、大图片字符、范围盒相关,详细内容可以去看看文档:“23.窗口字符 > 关于行高控制器.docx”。

范围盒/内边距

字符绘制核心插件中,提供了范围盒的插件指令测试介绍。

其本质上是以画布宽度为基准,再向内压缩内边距。

方便自动换行的排版用。

但是,上下左右,只有下侧的内边距设置了没用,因为 上左右 挤压后,所有文字都会向下挤出。

漂浮文字设计

1)临时文字+效果字符

示例 窗口字符管理层 中,有 临时文字+效果字符 的介绍。

这种组合其实是一种设计思路:

将一些给玩家临时反馈的短语,比如”+100”“完美”“good”。

通过艺术文字多着重设计一下,然后使用 临时漂浮文字 插件,显示出来。

可以大大提升游戏反馈感。

2)永久文字+指代字符

示例 窗口字符管理层 中,有 永久文字+指代字符 的介绍。

这种组合其实是一种设计思路:

将一些需要让玩家实时关注的属性,比如”生命”“魔法”“攻击力”。

通过 永久漂浮文字 制作成一块面板,全部显示出来,并且实时显示。

可以大大提升游戏反馈感。

功能 - 窗口字符贴图

你需要先了解 窗口字符基础 ,如果没看,不要急着往下翻。

字符块/字符块贴图

字符块: 即多个常规字符打包成一组,并在文本域中生成一个贴图。

比如用”\dts[一组字符]”,可以打包成字符块。

字符块贴图: 即多个常规字符打包后,形成的贴图对象。

字符块和字符块贴图是一个意思。

字符块有个好处,就是因为它是一组文本的贴图,因此能够进行贴图的各种高级变化。

比如 加背景、设置贴图动作效果 等。

还能进行 整体显示、整体变换、整体涂色 等效果。

一般的字符块,需要使用 \dts[] 来将多个字符包裹成一个整体。

你也可以使用多个 \dts[] 来一个个包裹字符。

另外,在逐个绘制中,也有必要使用\dts[]来打包,若不打包则样式是一个个分布的。

比如”23.窗口字符 > 关于颜色核心.docx”的设计章节 设计一个艺术渐变字体 如下图。

不使用字符块使用字符块
\c[216]\fn[JFont]Drill 1234\c[216]\fn[JFont]\dts[Drill 1234]

贴图的翻转

翻转字符如下表。

窗口字符描述
\dtsh[on]之后的字符块贴图,开启横向翻转。
\dtsh[off]之后的字符块贴图,关闭横向翻转。
\dtsv[on]之后的字符块贴图,开启纵向翻转。
\dtsv[off]之后的字符块贴图,关闭纵向翻转。

设置后效果如下图。

贴图的内边距

内边距设置如下表。

(注意,内边距设置只对 字符块有效。不要与\pa[]范围盒边距搞混了)

窗口字符描述
\dtsp[5]之后的字符块贴图,内边距上下左右5像素。
\dtsp[5:10]之后的字符块贴图,内边距上下5像素,左右10像素。
\dtsp[5:5:10:10]之后的字符块贴图,内边距上5,下5,左10,右10像素。
\dtsp[reset]之后的字符块贴图,内边距清零。

设置后效果如下图。

修改贴图内边距后,字符块会撑开行高。注意管理好行高值哦,你可以去看看:”23.窗口字符 > 关于行高控制器.docx”。

功能 - 逐个绘制

逐个绘制原理

文本域: 是指绘制窗口字符的区域,文本域具有高度和宽度。

字符如果越出了边界,则会被遮挡。

文本光标: 文本域中确定下一个字符位置的竖线。(有时候简称”光标”)

每绘制一个新的字符,光标都会前进到下一个位置,并且光标可以换行。

字符绘制: 每输入一个字符,光标就能向前移动。

常规情况下,绘制所有字符的过程,都在一瞬间内完成。

逐个绘制: 每隔几帧时间,绘制下一个字符,直到绘制完全部字符。

由于绘制有时间差,所以需要实时控制绘制,因此性能消耗也比一次性绘制要大的多。

字符绘制 是一瞬间绘制完毕。逐个绘制 是一个时间段内,多次绘制。

消息输入字符

消息输入字符: 能识别”\xxx”或”\xxx[]”格式的字符串,只在 逐个绘制 过程中生效的功能,比如等待、实时切换脸图功能。

窗口字符类型分为:常规字符表达式指代字符效果字符消息输入字符

各类窗口字符在 窗口字符核心、字符绘制核心 中的关系如下图。

对话框与逐个绘制

对话框主要基于 逐个绘制 功能,然后在此基础上,扩展了很多额外功能。

对话框的逐个绘制: 专门针对对话框的逐个绘制功能。

对话框在执行 逐个绘制 期间:

》绘制结束前,会持续阻塞事件指令。

》绘制时,可以控制脸图。

》绘制时,可以加窗口字符,要求跳行、等待几帧时间、等待玩家输入。

》绘制结束后,会等待用户按键输入,只有按下确定键后,才执行下一条事件指令。

》……

总的来说,对话框是一个多个功能组合的形态,如下。

对话框 = 逐个绘制 + 指令阻塞 + 子窗口管理 + 脸图管理 + 按键管理

也正是由于 默认对话框 的功能太多太杂,

所以才会分离成 窗口字符核心 和 对话框优化核心 。

以确保其它插件都能支持 逐个绘制,而不会被 对话框 独占。

如果不加 窗口字符核心,默认底层只有对话框才能进行逐个绘制。现在基于 窗口字符核心,各类子插件的文本域都可以支持 逐个绘制 功能了。
默认对话框 由于底层结构,不支持窗口字符。对话框优化核心 改进了底层结构,已支持窗口字符。

功能 - 子插件

你需要先了解 窗口字符基础 ,如果没看,不要急着往下翻。

效果字符 - 【窗口字符 - 窗口字符核心】

窗口字符核心可以使得绘制字符的所有地方,都能生效窗口字符。

举个例子,开一个空工程,加核心插件。

然后修改角色名称,加上颜色效果字符。

测试游戏,可以发现角色名称变色了(左图)。

没有窗口字符核心时,默认无法支持颜色字符(右图)。

除了修改颜色,还能用 ”\{” 和 ”\}” 修改字体大小。

可以在选择技能是,发现字体大小改变了。

效果字符 - 【窗口字符 - 文本居中】

详细内容你可以直接去看:”23.窗口字符 > 关于文本居中.docx”。

效果字符 - 【窗口字符 - 行高控制器】

详细内容你可以直接去看:”23.窗口字符 > 关于行高控制器.docx”。

效果字符 - 【窗口字符 - 大图片字符】

你需要先了解 绘制原理,不要急。

该效果来自插件:

◆Drill_DialogTextBigImage 窗口字符 - 大图片字符

大图片字符的窗口字符如下表。

窗口字符描述
\dimg[1]绘制插件配置中对应的1资源图片,默认不占高宽。
\dimg[1:不占高宽]绘制插件配置中对应的1资源图片,不占高宽。
\dimg[1:不占高宽:位置[10,-10]]绘制插件配置中对应的1资源图片,设置偏移位置。
\dimg[1:占用高宽]绘制插件配置中对应的1资源图片,占用高宽。

由于是绘制在文本域,所以经常会出现下面的现象:

1)图片只有一半

因为文本域的宽度不够,所以只能看到上半部分,加高窗口即可。

(大图片不占字符宽度时,光标仍然停留在原位置。)

2)图片遮挡了前面的字符

由于可以通过 \dimg[1:不占高宽:位置[-80,0]] 设置图片的偏移位置,

所以在绘制时,当前光标的字符可以挡住前面的字符。属于正常现象。

当然,遮挡后,就不能再还原了,只能重新绘制。

所以一般都把 图片字符 放在最前面绘制,你也可以根据这个原理主动设置前面的字符的被遮挡效果。(窗口字符管理层以此制作了 阅后即焚 的效果,你可以去看看。)

同理,后绘制的大图片字符,可以遮挡前面绘制的大图片字符。

指代字符 - 【系统 - 字符串核心】

字符串的窗口字符可以与变量字符组合”\str[\v[21]]”。

该效果来自插件:

◆Drill_CoreOfString 系统 - 字符串核心

通过变量的值来修改不同情况下的字符串。

1)自定义技能名

技能块元素可以支持自定义的字符串。

修改字符串,切换不同的名字。

2)避免自我嵌套

字符串内部可以也用\str[]字符进行反复嵌套,但是要注意不能死循环嵌套。

比如3中有\str[2],2中有\str[1],而1中又有\str[3],则会构成死循环嵌套。

图中的字符串7,套用了前面2、5字符串中的内容,

但不是死循环,所以可以正常显示。

3)随时修改

你可以使用插件指令随时修改字符串的内容,包括嵌套其他字符串的内容。

你还可以让用户自己输入字符串,实现更多组合功能。

效果字符 - 【窗口字符 - 字符块的背景】

你需要先了解 字符块/字符块贴图,不要急。

该效果来自插件:

◆Drill_DialogCharBackground 窗口字符 - 字符块的背景

字符块的背景的窗口字符如下表。

窗口字符描述
\dDCBa[set:1]之后的字符块贴图,使用背景样式1。
\dDCBa[off]之后的字符块贴图,关闭背景设置。

通常字符块背景,会与 字符块贴图核心 的内边距一起用:

窗口字符描述
\dtsp[5]之后的字符块贴图,内边距上下左右5像素。
\dtsp[5:10]之后的字符块贴图,内边距上下5像素,左右10像素。
\dtsp[5:5:10:10]之后的字符块贴图,内边距上5,下5,左10,右10像素。
\dtsp[reset]之后的字符块贴图,内边距清零。

设置后效果如下图。

效果字符 - 【窗口字符 - 字符块的持续动作效果】

你需要先了解 字符块/字符块贴图,不要急。

该效果来自插件:

◆Drill_DialogCharContinuedEffect 窗口字符 - 字符块持续动作效果

字符块的持续动作效果设置的窗口字符如下表。

窗口字符描述
\dDCCE[4]之后的字符块,使用预设动作4。
\dDCCE[预设[4]]之后的字符块,使用预设动作4。
\dDCCE[off]之后的字符块,关闭动作设置。

该插件可以使得你可以让 字符块 播放持续执行的各种动作。

需要先把文本变成字符块\dts[],才能有效,常规字符没有效果。

使用\dts[]包裹的效果如下图。

注意,该插件的旧写法不太规范,如果你使用的是旧窗口字符,会出现下面的问题:不生效的窗口字符

从零开始设计(DIY)

窗口字符的从零开始设计(指向)

由于大部分设计都与窗口字符相关,并且交叉。

所以这里将 所有 与窗口字符相关的”从零开始设计(DIY)”都集中在一个文档中。

去看看文档”23.窗口字符 > (指向)窗口字符的从零开始设计.docx”。

常见问题(FAQ)

不生效的窗口字符

问题名称不生效的窗口字符
问题图示
问题描述出现了大量\d字符。
出现时机> 旧工程更新插件后,出现了大量\d字符。
原理解析因为这次更新全是窗口字符底层,所以很多窗口字符也修改了配置指令,如果窗口字符没有相关插件解析,会被作为 普通文本全部显示 出来。
解决方案图中的 “\dDCEE[使用方法:预设[4]]” 更新后应写为:“\dDCCE[4]\dts[使用方法]\dDCCE[off]” (具体去看对应的插件)原构造是把 字符块与插件配置紧密合并,但分离了 窗口字符贴图核心 后,字符块用”\dts[]”单独管理,所以动态效果只相当于给 “\dts[]” 字符块添加新的样式,可以与其他插件样式叠加,所以才这样设计。

贡献者

暂无相关贡献者

页面历史

暂无最近变更历史