实战用法
print_variables 主要用于 mod 调试阶段,当你需要追踪某个国家/州/角色上的变量值是否被正确设置时,可以将其临时插入执行块,把当前 scope 内所有变量和临时变量输出到日志文件,方便排查逻辑错误。开发完成后通常会将其注释掉或删除,避免影响性能。
# 调试:验证某次事件触发后变量是否正确赋值
country_event = {
id = debug.1
hidden = yes
immediate = {
print_variables = {
file = "debug_log"
text = "=== Event debug.1 fired ==="
append = yes
print_global = yes
}
}
}
配合关系
[has_active_rule](/wiki/trigger/has_active_rule):在确认某规则激活后紧跟 print_variables,可验证规则触发时变量状态是否符合预期。
[clr_country_flag](/wiki/effect/clr_country_flag):清除标记前先打印变量快照,便于对比清除前后状态,定位标记逻辑错误。
[country_event](/wiki/effect/country_event):通过触发专用调试事件来集中调用 print_variables,使日志输出更有组织,便于批量检查多个 scope。
[any_owned_state](/wiki/trigger/any_owned_state):遍历州时配合在子 scope 中调用 print_variables,可逐一输出每个州上的变量值,适合排查州级变量同步问题。
常见坑
- 忘记在发布版本中移除:
print_variables 每次执行都会进行文件 I/O,若遗留在高频触发的 effect 块中(如每日脉冲),会严重拖慢游戏性能,必须在调试结束后删除或用 if 条件块包裹控制。
- 误以为
var_list 可以省略所有字段:file 字段是必填项,省略会导致脚本报错或输出到意外位置;而 var_list 才是真正可选的——不写则输出 scope 内全部变量,写了则只输出指定变量,两者行为差异容易混淆。