功能

function 是一个为您的 Yarn 脚本提供值的代码块,您可以在 if 声明,或存储在 变量.

在 Yarn Spinner 脚本中,函数执行两种主要任务:

  • 函数可让您获取随时间变化或取决于其他值的值。例如, random 每次调用函数时都会返回不同的随机数。
  • 函数可让您将游戏中的数据返回到脚本中。

您在表达式内调用函数。例如:

// Inside an if statement:
<<if dice(6) == 6>>
    You rolled a six!
<<endif>>
 
// Inside a line:
Gambler: My lucky number is {random_range(1,10)}!

内置功能

Yarn Spinner 附带了多种内置功能供您使用。

visited(string node_name)

visited 返回一个布尔值 true 如果标题为 node_name 之前至少已进入和退出过一次,否则返回 false。会回来的 false 如果 node_name 与项目中的节点不匹配。

visited_count(string node_name)

visted_count 返回标题为 的节点出现次数的数值 node_name 已进入并退出,否则返回 0。会回来的 0 如果 node_name 与项目中的节点不匹配。

format_invariant(number n)

format_invariant 返回一个字符串表示形式 n,使用不变区域性进行格式化。这对于在命令中嵌入数字非常有用,其中命令期望使用不变区域性来格式化数字。例如, <<give_gold {$gold}>>,最终可能会变成 give_gold 4,51 德语,但是 give_gold 4.51 英语,现在可以 <<give_gold {format_invariant($gold)}>>,这将永远是 give_gold 4.51.

format()

format 功能与 C# 相同 string.Format,但只接受一个参数。例如, format("{0}", 123) 将返回 String "123", 和 format("${0:F2}", 0.451) 将返回 String "$0.45"。你可以 有关格式化的更多信息,请参阅 C# 文档.

random()

random 每次调用时都会返回一个 0 到 1 之间的随机数。

random_range(number a, number b)

random_range 返回之间的随机数 ab,包含在内。

dice(number sides)

dice 返回 1 到 1 之间的随机整数 sides,包含在内。

例如, dice(6) 返回 1 到 6 之间的数字,就像掷六面骰子一样。

[!警告]

由于错误,在 Yarn Spinner 3.0 之前的版本中,此函数返回 0 到 0 之间的数字 sides - 1,包含在内。

round(number n)

round 回合 n 到最接近的整数。

round_places(number n, number places)

round_places 回合 n 到最接近的数字 places 小数点。

floor(number n)

floor 回合 n 向下到最接近的整数,朝向负无穷大。

ceil(number n)

ceil 回合 n 直到最接近的整数,朝向正无穷大。

inc(number n)

inc 回合 n 直到最接近的整数。如果 n 已经是一个整数, inc 回报 n+1.

dec(number n)

dec 回合 n 向下到最接近的整数。如果 n 已经是一个整数, dec 回报 n-1.

decimal(number n)

decimal 返回小数部分 n。这始终是 0 到 1 之间的数字。例如, decimal(4.51) 会回来 0.51.

int(number n)

int 回合 n 向下到最接近的整数,趋向于零。

[!信息] 这不同于 floor, 因为 floor 四舍五入到负无穷大。

自定义功能

您可以在 Yarn Spinner 中定义自己的自定义函数。有关更多信息,请参阅 # 定义命令和函数 .

[!警告] 函数并不是让您向游戏发送指令的一种方式。为此,您应该使用 命令.

特别是,函数不能保证按照它们在代码中出现的顺序被调用,甚至如果 Yarn Spinner 认为结果可以被缓存的话,甚至根本不能被调用。应该尽可能地自定义函数 纯函数,除了根据参数返回一个值之外没有副作用。