用于选择较大字符串子部分的系统。允许在同一文本块内进行简单更改,而不必创建多个命令。文本变化系统灵感来自Ink的可变文本系统。Fungus 的 Writer 和 Menu 类目前使用此系统,因此 Say、Menu 和 Conversation 命令可以使用它。导致 Lua 将字符串传递给 Fungus Writer 或 Menu 的 Fungus Lua 操作也将起作用。
处理替换不同的文本段。保留以前的替换历史记录,以允许有序的变化序列。
- [] 标记不同部分的边界
- | 在变体内划分元素
默认行为是依次显示一个元素并保留最后一个元素。例如,[1|2|3] 第一次解析时将显示 1,第二次解析时将显示 2,之后每次解析时将显示 3。
允许有空部分,例如 [a||c],第二次显示时将有 0 个字符。
支持嵌套部分,仅当选择了其父元素时才会进行评估。
可以使用 [] 开头的某些字符来修改此行为,例如 [&a|b|c];
- & 不保留最后一个元素,而是以循环方式绕回到开头
- ! 不保存最后一个元素,而是返回变化部分的空值
- ~ 每次遇到时选择一个随机元素
示例用法
在一个简单的例子中,你可能希望用户第一次遇到某行时,读起来有所不同。也许一个店主,第一次他们说
但当再次运行同一个块时,你希望它更加友好
我们可以使用文本变体,而不必创建分散的命令块。
另一种常见用法是玩家返回菜单或故事分支点时经常重复出现的区块。你可能希望有一些变化,这样感觉更自然。也许可以通过改变问候语来随机化;
- 早上好。
- 你好。
- 挂得怎么样?
- 哎哎。
- 我们怎么样?
- 我们开工吧。
我们可以做些变化
有关更完整和全面的示例,请参见 FungusExamples\VariationText\TextVariation.unity 中的示例场景
未来的工作
- 捆绑变化的状态跟踪,以便它们可以与其他真菌数据一起保存在保存文件中
- 加载和解绑变化的状态跟踪,以便变化可以在应用程序生命周期的实例中继续。
- 条件变化部分:仅当真菌变量处于特定状态时才有效的部分。