关于窗口字符
相关插件
核心插件:
◆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[]” 字符块添加新的样式,可以与其他插件样式叠加,所以才这样设计。 |