当前位置: 首页 > 工具软件 > InK > 使用案例 >

Ink脚本语言学习笔记(小结)

徐唯
2023-12-01

在之前的四个部分中已经基本了解了Ink的语法和功能,这里就个人的理解作一下小结

一、基础内容

  1. 文本——分为默认/注释/提醒/标签文本,如果没有经过特殊标记,所有默认文本会显示在输出内容中
  2. 选项——分为用*号标记的一次性选项用+标记的可重复使用的选项(粘性选择)
    2.1. 除了方括号内的内容都会输出
    2.2. 选项中的内容是*号到]号之间的内容
    2.3. 多个标记符号并列能够组成多选结构
    2.4. 通过使用*-> ->DONE可以设置默认选项,是没有选项的选项,当选项全部消失后,会自动进入默认选项(最好设置为粘性选择
  3. 节点——以两个或以上等号开始,后面接名称部分,其中名称部分至少需要一个字母并且不能有空格,而后面的等号可写可不写,例如=== first_node ===
    3.1. 节点通过->符号进行转移
    3.2. 节点通过-> DONE或者-> END进行结束
  4. 转移——节点和节点之间通过转移(->)进行连接
    4.1. 句子之间通过<>可以粘合,但是尽可能不要大量使用
    4.2. 选项也可以通过转移跳转到——且如果是转移到该选项,就相当于该选项被选择了
  5. 分支流程——通过对文本、选项、节点、转移进行组合就能得到分支流程
  6. 次级节点——以单个=开始,名称部分规范与节点一样
    6.1. 次级节点的命名要具备节点内唯一性
    6.2. 第一个次级节点是默认节点
    6.3. 本地转移不需要父节点名称;而在节点外时使用需要父节点名称
  7. Include——通过Include将文本拆分到多个文件中
    7.1. Include永远应该在顶部
    7.2. 分割文件并不会影响命名空间
  8. 可变文字——将文字写在{…}大括号内,元素之间通过|垂直分割线进行分隔
    8.1. 分为顺序(默认)、循环(&)、单次(!)和随机(~),在第一个大括号后进行标记
    8.2. 以上形式可嵌套

二、缝合

  1. 焦点——通过使用焦点记号(-)可以将文本流汇聚在一起,减少对于转移、节点等的使用,保证故事流的线性和可阅读性
    1.1. 主要的作用就是用选项将故事的路径分开,但是最后又让他们重新组合在一起
  2. 故事流嵌套——通过使用多个焦点符号(-)和选项符号(*)可以实现多级结构
    2.1. 可嵌套任意多个级别
  3. 标签——通过使用圆括号可以进行标记(label)
    3.1. 能够通过之前的决策来影响后面的内容,同时也能让结构更清晰
    3.2. 仅作用于当前区块(节点/次级节点)
    3.3. 所有的选项都可以被标记

三、变量和逻辑

  1. 全局变量——从故事的任何位置都可以读取到的数据
    1.1. 全局变量可以通过VAR关键字在任何地方定义,并给予他们一个初始值,这个值定义了他们是一个什么类型的数据
    1.2. 可以使用与之前显示可变文字一样,通过{}来输出和使用所需要的变量
    1.3. 转移语句也是一种值,它可以被储存、更改、转移
    1.4. 全局变量对外部可见
  2. 逻辑——也就是代码部分,通常在Ink中显示的都是默认的文本形式,因此我们需要使用~符号标记来进行逻辑上的工作
    2.1. Ink支持基本的四则运算以及取余算法,如果需要更加复杂的操作可以编写函数(可以使用递归),或者调用外部函数代码
    2.2. Ink中目前只有三种基本查询:相等(==)、不相等(!=)、子字符串(?)
  3. 条件块——与常规if/else等效的功能,使用方式见这里
    3.1. 条件块也可以用于控制故事内容以及逻辑,甚至可以将选项也放在条件块中,但是为了避免语法和结构混乱,条件块中的选项必须使用跳转而不能使用焦点
    3.2. 多行块是基于条件块拓展的系统,通过关键字进行使用,分别为:顺序(stopping)、循环(cycle)、单次(once)和随机(shuffle),主要用于输出大段文字
  4. 临时变量——用于临时计算的变量,通过temp关键字进行使用
    4.1. 当离开了变量所处的节点之后,变量就会被销毁
    4.2. 临时变量一种特别有用的形式就是给任何节点和次级节点提供参数,例如== result(x) ==
  5. 函数——在节点上使用参数意味着它们基本上就是函数了,通过function关键字进行标记,返回值通过~ return进行使用
    5.1. 函数具备以下属性
    ① 不包括次级节点
    ② 不能使用转移或提供选项
    ③ 可以调用其他函数
    ④ 可以输出内容
    ⑤ 可以返回任意类型的值
    ⑥ 可以安全的递归
    5.2. 函数不一定需要返回值
    5.3. 函数也可以在文本内被使用
    5.4. 函数参数可以是引用类型,通过ref关键字进行使用
  6. 常数——不解释

四、进阶故事流控制

  1. 通道——通过一种新的转移将功能集成到语言中,这种转移的功能类似于子路线,语法是一个箭头-> 转移 ->
    1.1. 通道本身使用->->语句来结束通道
    1.2. 要注意,因为编译器不会在运行时检查隧道是否确实以->->语句结尾,因此需要仔细确认通道的语法是否正确
  2. 线程——作家可以将故事“分叉”到不同的部分,以涵盖更多玩家可能的动作
    2.1. 个人觉得不好用,正常情况下可能永远用不到线程,一旦涉及到线程,工程本身一定会变得复杂!因此推荐别用
    2.2. 线程可以将多个部分拼接在一起

以后还想起什么会再编辑

 类似资料: