GameMaker Studio 2中的实数是指被双精度浮点数,也就是说它们中有一个小数点,但在小数点之前或之后没有固定的位数。例如,2是二进制整数,但2.0是浮点实数。在处理跨平台开发时,整数和浮点数之间的这种区别非常重要,因为在Windows PC上进行计算的精度和在移动设备上的精度是不相同的。这意味着在进行比较时应特别注意,例如:
if image_index == 1 {do something...}
这样可能看起来没什么错,但是由于浮点运算的工作方式,这可能意味着image_index实际上等于1.00000000001,在这种情况下,比较永远不会产生 true ,并且代码将继续运行. 这些类型的错误很难调试,所以最好多留意它们,并提前计划使用其他方式的检查值或使用适当的floor或舍入函数(如下所示)将数值转化为一个整数。例如实例代码可以被改写成:
if floor(image_index) == 1 {do something...}
同样值得注意的是,在使用 YoYo Compiler targets时,所有的表达式和函数都是从左到右求值,而在其他所有目标平台上,它们都是从右到左求值 ,这意味着,例如,根据平台的不同,这将产生不同的结果:
val = max(num, ++num, num++);
你还可以使用GameMaker Studio 2中提供的特殊函数来为浮点数的数学运算设置epsilon 值。当一个实数四舍五入到最近的浮点数时,epsilon(也称为"machine epsilon")是相对误差的上界,可以通过以下函数得到并设置epsilon的值:
我们可以将GameMaker Studio 2处理实数的函数分为以下几类:
这些函数都处理使用随机数和值:
注意: 在使用随机函数时,GameMaker Studio 2在每次启动游戏时都会使用相同的随机种子。这会让调试更加容易,因为可以保证随机函数总是返回相同的值,但是如果你不希望这样,你必须在游戏一开始就设置一个新的随机种子,要么使用randomise,要么使用random_set_seed。
这些是所有的三角函数: