功能

函数是为您的 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.

random()

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

random_range(number a, number b)

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

dice(number sides)

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

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

min(number a, number b)

min 比较 ab,并返回两者中较小的一个。

max(number a, number b)

max 比较 ab,并返回两者中较大的一个。

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 for Unity 文档。

您可以创建自己的命令,以便您的脚本可以向您的游戏发送指示。有关如何在 Unity 游戏中创建它们的更多信息,请参阅 创建命令和函数,位于文档的 Yarn Spinner for Unity 部分,以及其他引擎的等效项。

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

应该尽可能地自定义函数 纯函数,除了根据参数返回一个值之外没有副作用。