Skip to content

关于选择项窗口

相关插件

核心插件:

◆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”以后的选项即可。

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

贡献者

暂无相关贡献者

页面历史

暂无最近变更历史
最近更新