模板:Dialog
此页面正在建设中。 条目内容正在不断地完善。 |
预览[编辑源代码]
|
| |||||||||||
|
模板组成[编辑源代码]
主要分为三部分:角色头图(最好为透明底)、对话内容、对话选项。
使用表格嵌套控制比例。
角色头图[编辑源代码]
留给头图的位置占用左侧 20% 的空间。
为了美观,头图的实际占用是头图位置的右侧 80% 且底置。
头图上方有角色名称。
剩下的 80% 空间留给文本。
对话内容[编辑源代码]
所有的对话内容的总长度被限制,方便滚动以浏览记录。
每一个对话由两个部分组成:折叠控件、对话主体。
其中,对话主体分为多个「对话条」,每个「对话条」分为两个子区域,左侧的角色名和右侧的对话内容。出现的每一个角色名均占用一个对话条。
在所有对话内容结束后,在滚动条结束前,设置一个文本锚点。
在输入中,是一个一个对话条输入的。
需求参数:
- 昵称
- 内容
- 请注意,第 {i} 个对话条的 id 默认为「Dialog{i}」,总共是「mw-customcollapsible-对话独有ID-Dialog{i}」,不包含的部分是自动处理的。
对话选项[编辑源代码]
每个对话选项分为两部分,折叠控件、选项主体。
在点击选项时:
- 跳转到文本锚点,还原自动滚动;
- 折叠当前显示的选项;
- 展示下一段对话和剩余的选项。
需求参数:
- 内容
- 点击后展开哪些对话和选项的 id({{TextCollapse/Controller|ID=需要展开的内容|CONTENT=内容}})
- 请注意,第 {i} 个对话条的 id 默认为「Option{i}」,总共是「mw-customcollapsible-对话独有ID-Option{i}」,不包含的部分是自动处理的。
- 从 0 开始。
模板实现[编辑源代码]
因为有一个第一次出现的对话,考虑这个为根节点,使用变量记录内部表格,顺序遍历以记录,创建表格嵌套。
对话树里从根节点到叶子节点的每一个链的遍历顺序可以被保证的前提是以适当方式遍历树,换句话说,若玩家没有故意颠倒对话顺序,则无需担心对话的先后混淆。
为了降低循环次数,把对话选项所需的表格存在变量里。
局限性[编辑源代码]
由于循环上限 100 的限制,在 max (DialogCount, OptionCount) > 100 个的时候会寄。mcg 的 npc 对话不会有那么多的……对吧……(心虚)