富文本、变量和文本流程
Galgo 的文本系统支持翻译 key、变量插值和简单富文本标记。它们会在 Step 执行时通过 ResolveText 处理。
翻译 key
配置翻译器:
go
translator := i18n.NewTranslator()
translator.AddLanguage("en", map[string]string{
"aria_greet": "Hey, I was looking for you.",
})
translator.AddLanguage("zh", map[string]string{
"aria_greet": "嘿,我一直在找你。",
})
translator.SetLanguage("zh")在脚本中使用 key:
go
galgo.Text("Aria", "aria_greet")如果当前语言没有对应 key,Galgo 会返回原字符串。因此也可以混用 key 和直接文本。
变量插值
设置变量:
go
galgo.SetVariable("player_name", "Haruto")在文本中插值:
go
galgo.Text("Aria", "你好,{{player_name}}。")变量也可以由输入框写入:
go
galgo.Input("player_name", "你叫什么名字?",
galgo.InputDefault("Haruto"),
galgo.InputMaxRunes(16),
)读取变量:
go
name := engine.GetStringVar("player_name", "Player")
walked := engine.GetBoolVar("walked_together", false)
score := engine.GetIntVar("score", 0)常用变量 API:
SetVariable(key, value):设置变量。GetVariable(key):返回(value, ok)。GetVar(key):直接返回变量值,不存在时为nil。HasVar(key):变量是否存在。DeleteVar(key):删除变量。GetStringVar、GetBoolVar、GetIntVar、GetFloatVar:带 fallback 的类型读取。
富文本标记
富文本标记在 ParseRichText 中解析。常用标记:
text
[color=#F43F5E]红色文字[/color]
[color=pink]粉色文字[/color]
[size=22]大字号[/size]
[speed=6]更慢的打字速度[/speed]
[wait=20]
[shake]抖动文字[/shake]
[se=click]示例:
go
galgo.Text("Aria", "[speed=6]等等![/speed][wait=20]你是不是[color=#F43F5E][shake]忘了[/shake][/color]什么?")注意:富文本主要影响文本绘制和打字机节奏。复杂排版、图片内嵌、按钮内嵌文本等不属于当前富文本系统。
打字机速度
Config.TypewriterSpeed 控制默认打字速度。数值越小越快。
go
galgo.Config{
TypewriterSpeed: 2,
}设置页中的 TextSpeedValue 会把速度映射为 0 到 1 的滑块值。它内部仍然写回 Config.TypewriterSpeed。
历史记录和回滚
玩家点击推进一段对话后,当前纯文本会加入历史记录。富文本标记会通过 CleanRichText 清理,历史页显示的是更适合阅读的文本。
对话和输入会推入回滚状态。玩家在历史页点击过去的记录时,Galgo 会尝试恢复到对应状态。如果无法回到更早状态,会显示提示。
文本流程建议
建议使用翻译 key 管理剧情文本,尤其是中英文双语或后续需要校对的项目。直接写中文当然可行,但当剧情量变大后,翻译 key 更容易批量替换和检查。
变量名建议稳定且语义明确,例如:
player_namewalked_togetheraria_affectionpromise_token_ready
避免把显示文本作为变量名,也避免用过短的变量名,例如 a、flag1。