功能
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 返回之间的随机数 a 和 b,包含在内。
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 认为结果可以被缓存的话,甚至根本不能被调用。应该尽可能地自定义函数 纯函数,除了根据参数返回一个值之外没有副作用。