Skip to content

Naked variable_裸变量

在 SugarCube 的世界里,除了使用标准的打印宏(如 <<print>><<=>> 或简写 <<->>)来输出 TwineScript 变量外,我们还有一种更优雅、更高效的选择——裸变量标记(Naked Variables)

它允许你直接在章节文本中书写变量,系统会自动将其插值为对应的字符串表示形式,让你的文案创作流程更加丝滑。

语法规范与支持类型

裸变量标记涵盖了大部分常见的变量访问场景:

类型语法结构典型示例
基础变量$变量名$name
对象属性(点记法)$变量名.属性$player.hp
索引访问(括号法)$变量名[索引]$list[0]$map["key"]

建议:裸变量仅适用于简单的值输出。如果你需要执行复杂的逻辑运算、方法调用或表达式计算,请务必回归使用 <<print>> 宏以确保解析准确。

运行机制示例

让我们来看看裸变量在实际渲染中的表现:

sugarcube
/* 传统的打印宏方式 */
你的名字是:<<print $name>>

/* 简洁的裸变量方式 */
你的名字是:$name

/* 渲染结果(假设 $name 值为 "Apo") */
你的名字是:Apo

转义处理:防止非预期插值

在编写教程或调试信息时,如果你希望原始输出变量名(例如显示 $name 本身而不是它的值),你需要对标记进行转义。

以下是三种官方推荐的转义方案:

  1. 三连双引号:使用 """$name""" 包裹。
  2. Nowiki 标签:使用 <nowiki>$name</nowiki> 容器。
  3. 双美元符号:使用 $$name 进行前缀转义。

这三种方法在最终渲染时,都会将其视为纯文本 $name 处理。

进阶展示:内联代码块

如果你希望在展示变量原型的同时,为其赋予代码样式的视觉效果,可以使用 {{{ 三重花括号 }}}。这会将内容包裹在 HTML 的 <code> 标签内,非常适合技术文档。

sugarcube
/* 使用三重花括号转义 */
请查看变量 {{{$name}}} 的当前值。

/* 渲染结果 */
请查看变量 <code>$name</code> 的当前值。