关于选择项窗口
相关插件
核心插件:
◆Drill_CoreOfDialog 对话框 - 对话框优化核心
插件本体:
◆Drill_DialogChoiceBox 对话框 - 选择项窗口
选择项窗口提供各种扩展功能,包含:修改列数、多行文本支持、多选项合并 等。
你可以去看看示例中 对话框管理层 的相关介绍。

| 该插件控制 选择项窗口 的功能属性。如果你还想控制X、Y、高度、宽度,去看看:Drill_DialogOperator 对话框变形器如果你还想控制美化窗口,去看看:Drill_DialogSkin 对话框皮肤 |
选择项窗口
参数介绍
1)位置
选择项窗口始终跟随对话框,保持在一个固定的位置。
如果被挤了,那么会转移到对话框上方。

另外,选择项窗口的X方向分为“左侧”、“中间”、“右侧”三种类型,如下图。
直接在”显示选项”中设置即可。

2)默认选中
默认选中项,可以直接在”显示选项”中设置。

但如果是 多选项合并 的情况,
这个设置选不到6以上的选项,可以使用下面的插件指令设置选中。

3)列数
列数需要通过插件指令来控制。
如果列数比选项数量要大,则窗口会出现空列,如下图。


4)选项最小宽度
默认选项最小宽度为96像素,
如果文本只有一个字,则显示如下图。

文本的长度,可以撑开最小宽度。
你可以手动加宽最小宽度,如下图。
通常加宽最小宽度是为了适配下图的情况。

注意,为了让选项与对话框宽度保持一致,需要手动计算宽度。
对话框宽度 = 选项宽度 * 列数 + 18*2
选项宽度 = (对话框宽度 - 18*2) ÷ 列数
公式中的18是左右内边距的值。
示例中,按照公式计算后,设置的 对话框宽度、选项宽度 如下图。

5)选项高度与多行文本
添加选择项窗口插件后,选项能支持多行文本的功能,
你可以使用
强制换行。


如果选项文本非常长,可以使用 选择项窗口+字符串核心 实现长文本。
Drill_CoreOfString 系统 - 字符串核心
填写窗口字符\str[13],然后在 字符串[13] 中写长文本即可。
使用方法如下图。



置灰与隐藏
1)置灰与隐藏
置灰和隐藏设置,需要临时设置,如下图。
在列表中,添加选项的id,然后在 下一个选择项窗口 中生效。

| 注意,先执行“隐藏列表”,再执行“排列后隐藏列表”。两列表的效果是叠加的。比如[1,2,3,4,5,6],先隐藏[3],会留下[1,2,4,5,6],再排列后隐藏[3],会留下[1,2,5,6]。“排列后隐藏” 主要用于随机排序情况,可见后面章节:2)随机排列 。 |
2)随机排列
置灰与隐藏的指令中,还有个 ”开启全部选项随机排列” 的功能。
该功能控制选项分为三个流程:
隐藏选项、随机排列、排列后隐藏选项
举个例子:
| 流程 | 执行指令 | 选项列表值 |
| 1.游戏初始化 | 准备播放选项 | [1,2,3,4,5,6] |
| 2.流程-隐藏选项 | 隐藏选项[3] | [1,2,4,5,6] |
| 3.流程-随机排列 | 随机排列 | [4,1,6,5,2] |
| 4.流程-排列后隐藏选项 | 隐藏选项[3] | [4,1,5,2] |
| 5.最终显示 | 无 | [4,1,5,2] |
上述流程是固定的执行顺序,你可以根据情况来写插件指令。
| 使用流程 随机排列+排列后隐藏选项,你能制作 随机抽卡 的选项功能,详细可以看看后面章节:设计一个随机抽卡的多选项框 。 |
3)置灰时的前缀后缀
置灰效果,通过前缀的窗口字符 \c[7] 来实现。
如果选项有其它变色的字符,会造成置灰失效问题。

这时候,可以考虑在改变文本颜色前,
使用窗口字符 \cc[save] 和 \cc[load] 临时保存/恢复文本颜色,
这样就不会造成 白色文本置灰 的效果失效了。


多选项合并
1)合并方法
选择项窗口支持多个选项合并,突破6个选项的限制。
首先,需要开启插件指令。

然后,把选项连着写即可,如下图。
游戏中会自动合并,不限选项数量。

注意,选项指令必须连着写,指令后如果插入其它指令,则会断开,即使是注释指令也会断开。![]() |
2)嵌套与合并
开启插件指令后,选项中嵌套的选项,也能合并,如下图。


3)合并的属性
多个选项合并后,下列选项属性,都以第一个选项的设置为准。

4)取消分支时
如果写了多个选项,全都带有“取消分支时”的指令,
那么这些指令,在“取消分支时”触发后,会全部依次执行。

(通常带一个“取消分支时”就可以了,留多个也不是不行)
从零开始设计(DIY)
设计一个确认框/选择题框
1. 设置一个目标
2023年7月16日,作者我看见一个有趣的选择题。
这种布局方式,用对话框的选择项窗口好像可以制作,
但那个时候插件功能还没开坑,先收在灵感里面堆着。

2025年11月2日,作者我终于开坑到这里了,ヽ(#`Д´)ノ
顺带也找了个确认框作为参考。

2. 结构规划/流程梳理
确认框和选择题框,可以通过 对话框+选择项窗口 组合来实现。

其中,对话框需要由变形器控制 位置和高宽。
要用到插件:
Drill_DialogOperator 对话框 - 对话框变形器
然后,选择项窗口要与对话框的宽度保持一致,
但由于选择项窗口不能直接修改宽度,所以需要通过 列数+选项最小宽度 来控制。
这就需要下面的插件指令:
选择项窗口 : 下一个窗口-修改列数 : 列数[2]
选择项窗口 : 下一个窗口-修改列数 : 列数变量[21]
选择项窗口 : 下一个窗口-修改选项最小宽度 : 宽度[96]
选择项窗口 : 下一个窗口-修改选项最小宽度 : 宽度变量[21]
最后建立事件并执行插件指令,在游戏中测试即可。
3. 变形器指令注意
首先,默认的长条对话框,需要调整为:居中+短小的长方形。
Drill_DialogOperator 对话框 - 对话框变形器
但由于变形器没有直接居中的功能,所以需要考虑下面的插件指令。

要修改自定义宽度、x位置、y位置,(高度按文本自适应就好)
还需要专门定义一个模式,模式中设置三个属性都为“使用自定义值”,才能生效。

4. 确认框设计
设置模式后,通过下面插件指令修改宽度、X位置、Y位置即可。

最后,结合对话框宽度与选项的宽度关系,(见选项最小宽度)
选项宽度 = (对话框宽度 - 18*2) ÷ 列数
这里设置为两列,选项最小宽度计算得出:232像素。
插件指令如下图。

在游戏中测试,如下图。
(这个过程还可能需要进行多次调整,因为对话框居中都要用宽度与xy来计算)

5. 选择题框设计
选择题框与确认框一样,只不过选择题框要宽一点点。
所以,对话框按照624像素来计算,
选项宽度 = (对话框宽度 - 18*2) ÷ 列数
同样设置为两列,选项最小宽度计算得出:294像素。
插件指令如下图。

确认框只有两个选项,选择题有四个选项,在选项指令中改可以了。
最后在游戏中测试,如下图。

| 这里 对话框变形器插件 只给 对话框 变形哦,选择项窗口是通过修改列数+选项最小宽度实现的。 |
设计一个随机抽卡的多选项框
1. 设置一个目标
2025年10月26日,作者我被群友推荐了一个萝莉魔兽地图《守护小天使》,我发现这个游戏,每回合的战斗都有天赋抽卡,很有趣。
(这种肉鸽属性抽取的机制这几年很火,比如小丑牌)

于是作者我也打算开坑了。
先不管好不好看,先把机制安排上。ヽ(*。>Д<)o゜
2. 结构规划/流程梳理
抽卡的流程,举个例子:
有20张卡片,随机抽取4张,然后摆出来,让玩家手动选1张。
可以理解为:
有20个选项,随机抽取列出4个选项,让玩家手动选1个。

》有20个选项,由选择项窗口的合并功能实现。
》随机抽取,由选择项窗口的随机排列插件指令实现。
》抽取4张,由隐藏实现,将5以后的全部选项隐藏,就相当于“抽取4张”。
3. 初步测试
先不考虑选择项窗口的其它功能,
就先测试一下随机的功能,单用”随机排列”指令,如下图。

在游戏中测试,
可以看到随机后的效果如下图。

4. 卡片选项设计
接下来,再看一眼想法。
有20个选项,随机抽取列出4个选项,让玩家手动选1个。
根据前面章节的 随机排列 的流程。
隐藏选项、随机排列、排列后隐藏选项
可以知道选择项窗口需要 先随机,后隐藏。
所以使用“随机排列”和“排列后隐藏选项”即可。
插件指令如下图。

| 第一步的隐藏选项能控制 选项 是否出现在随机卡池中。这里只是没用上,但可以后续加功能。 |
为了让选项看起来更像“卡片”一点。
这里使用窗口字符撑开,如下图。
》一共四行。(三个
字符隔开)
》”卡片”左右都有两个空格,是为了撑开选项的宽度值。
》最后一个字符要有个空格字符,因为文本末尾的
字符会被忽略掉。
完成字符后,后面的选项都按这个字符格式写下去即可。

接着,6个选项写好后,还需要更多选项,这里用 多选项合并 功能。
用插件指令开启。

然后连着写”卡片7”以后的选项即可。

最终在游戏中的测试效果如下图。

