共计 2661 个字符,预计需要花费 7 分钟才能阅读完成。
高级随机数生成器
高级随机数生成器(Advanced Random)提供了先进的伪随机数生成(PRNG)表达式,包括二维和三维噪声函数,如 Perlin 噪声(在插件中称为“经典噪声”)。这些对于程序生成非常有用,例如提供无尽的独特关卡设计。
它还提供了带种子的随机函数,当给定相同的种子时,会提供相同的伪随机数序列。这也可以用于覆盖系统的随机函数(包括 random() 表达式和行为中的随机性),使用高级随机数生成器的 PRNG。默认情况下,种子始终是随机的,意味着每次运行游戏时随机数生成都不同。
脚本编写
在使用 JavaScript 或 TypeScript 编码时,可以通过 IAdvancedRandomObjectType 脚本接口访问此对象的功能。
渐变
高级随机数生成器还提供了计算自定义渐变的工具。这对于程序生成很有用。它生成的随机数范围在 0 - 1 之间,但渐变允许你为该范围内的某些值或颜色指定值。例如,将范围 0 -0.5 设为蓝色,将范围 0.5- 1 设为绿色,允许你使用 0 - 1 范围内的随机数查找颜色,并获取水域或陆地颜色。与 2D Perlin 噪声等表达式结合使用时,这提供了一种随机生成带有水域和陆地混合区域的方法。
概率表
高级随机数生成器还可以创建概率表,这是生成加权随机数的一种方式。例如,如果你添加了三个权重为 1 的项目,然后添加了一个权重为 2 的第四个项目,那么这个项目被选中的可能性是其他任何项目的两倍。概率表条目的值可以是数字或字符串,但权重必须是数字。这对于像随机拾取这样的任务很有用,其中有很多常见的廉价物品,但也有些稀有的贵重物品。
排列表
高级随机数生成器的另一个功能是创建排列表。这些只是一组随机排序的数字。这对于检索非重复的随机数很有用。例如,你可以使用 0 -51 的数字来表示一副牌,并创建一个排列表来表示洗牌后的牌组。然后,如果你按顺序读取排列表并用排列表达式处理,它将返回一系列随机的牌,就像从洗牌后的牌组中发牌一样。
高级随机属性
种子
用作随机数生成种子的字符字符串。相同的种子将始终提供相同的数字序列。空字符串(默认值)将使用随机种子,确保每次的数字序列都不同。
替换系统随机
如果启用,系统随机函数(包括系统的 random() 表达式以及行为中的随机性)将被覆盖,以使用高级随机数生成器的 PRNG。由于高级随机数生成器可以控制种子,这为整个运行时的随机数生成提供了种子。
高级随机条件
高级随机对象没有任何条件。
高级随机动作
设置倍频程
设置用于相干噪声生成的倍频程数量,从 1 -16。默认值为 1。这只影响 Billow、Classic 和 Ridged 表达式。使用额外的倍频程会在噪声函数上添加越来越多的细节层,但处理速度也更慢。
更新种子
使用字符串设置新的随机数生成种子。
注意,如果你传递一个空字符串,它仍然使用空字符串作为种子。如果你想回到使用随机种子,将 RandomSeed 表达式作为要设置的种子传递。
添加渐变停止点
在当前渐变中添加一个停止点。在创建渐变后使用,以指定渐变。停止点的位置可以是任何数字,但通常保持在 0 - 1 范围内,以便与随机表达式一起使用。停止点的值应该是 rgbEx(r, g, b) 或 rgba(r, g, b, a) 形式的表达式(当渐变使用颜色模式时);否则它可以是一个简单数字。默认渐变是一个简单的黑色到白色渐变,使用位置 0 处的 rgbEx(0, 0, 0) 和位置 1 处的 rgbEx(100, 100, 100)。
创建渐变
创建一个新的渐变。通过给它们不同的名称来管理多个渐变。创建渐变还将它设置为当前渐变,因此此操作可以立即跟随添加渐变停止点以指定渐变。默认情况下,渐变工作在颜色模式,它使用基于 rgbEx 或 rgba 表达式的值;然而,它们也可以设置为数字模式,使用简单数字。
设置渐变
通过其名称设置当前渐变。这允许在多个渐变之间切换。
创建排列表
生成一组随机排序的数字。长度是要生成的数字数量,偏移量是序列中的第一个数字。例如,长度为 3 且偏移量为 1 将生成数字 1、2 和 3,然后随机洗牌。
重新洗牌排列表
重新洗牌现有的排列表。
添加概率条目
向当前概率表添加一个条目。值可以是字符串或数字。权重影响项目被选中的可能性,相对于其他项目的权重。
创建概率表
使用字符串标识创建新的概率表。
移除概率条目
从当前概率表中移除现有条目。如果指定了 0 的权重,则无论其权重如何,都将删除第一个具有给定值的条目。否则,只有当条目同时匹配值和权重时才会删除条目。
设置概率表
从当前概率表中设置加权随机值的来源。
从 JSON 创建概率表
从 JSON 字符串创建新的概率表。输入应该是一个(weight: number, value: number|string)元组的数组。
高级随机表达式
Billow2d(x, y) / Billow3d(x, y, z)
使用 Billow 噪声在 0 - 1 范围内生成随机数,可以使用 2D 或 3D 坐标。
Cellular2d(x, y) / Cellular3d(x, y, z)
使用 Cellular 噪声在 0 - 1 范围内生成随机数,可以使用 2D 或 3D 坐标。
Classic2d(x, y) / Classic3d(x, y, z)
使用经典(Perlin)噪声在 0 - 1 范围内生成随机数,可以使用 2D 或 3D 坐标。
RandomSeed
生成一个随机种子字符串,可用于设置种子,恢复不可预测的数字序列。
Ridged2d(x, y) / Ridged3d(x, y, z)
使用 Ridged 噪声在 0 - 1 范围内生成随机数,可以使用 2D 或 3D 坐标。
Seed
当前设置的种子,作为字符串。
Voronoi2d(x, y) / Voronoi3d(x, y, z)
使用 Voronoi 噪声在 0 - 1 范围内生成随机数,可以使用 2D 或 3D 坐标。
Gradient(Position) / GradientByName(Name, Position)
在给定位置采样渐变。这返回颜色模式渐变的颜色值,否则返回简单数字。Gradient 变体指的是当前渐变,而 GradientByName 变体指的是使用其名称的大小写不敏感字符串的任何渐变。
Permutation
从置换表中获取基于零的索引的值,从 0(第一个项目)到但不包括表的长度。
Weighted / WeightedByName(Name)
从概率表中获取随机值。值的相对可能性受其权重的影响。Weighted 变体指的是当前概率表,而 WeightedByName 变体指的是使用其名称的大小写不敏感字符串的任何概率表。
ProbabilityTableAsJSON
获取当前概率表作为 JSON 字符串。这可以使用从 JSON 操作创建概率表来读取。