depth

当你创建一个对象时,你可以为其分配一个初始depth,它定义了在玩游戏时在房间里如何绘制该物体的实例,这个变量可用于在游戏运行时获取和更改该深度值。通常情况下,您无需使用此变量,因为您应该将实例设置为隐蔽的,然后将其设置为特定的深度,但您可能想使用此值更改实例的深度,在这种情况下,将在给定深度下专门为实例创建 "临时层"。请注意,当没有一个实例处于相同深度时,这个临时层将从内存中移除(与普通图层不同,即使它们上面没有任何东西也会保留)。

重要事项 当您修改 depth 变量并且 GameMaker 管理图层时,内置 layer 变量将返回 -1 而不是图层 ID,因为无法通过代码操作托管图层。

注意 深度值是近似值。如果您尝试以接近最大深度和最小深度的深度值绘制事物,则可能会由于计算引入的不准确性而无法绘制它们。

GameMaker中,实例的深度值越低,将绘制该实例的"更靠近相机",而深度值越高,则表示实例将被绘制为"远离相机",即:- 1000 绘制在 - 100 的顶部,这在 0 的顶部,依此类推。

Depth sorting example image 请注意,具有 相同 深度的对象实例可以绘制在彼此的 上方 下方 ,即使它们在 房间编辑器 。如果您想保证某些内容绘制在其他所有内容之上或之下,则应始终显式设置深度 (或图层)。另请注意,存在最小 (-16000) 和最大 (16000) 深度值,超出该深度值将不会绘制实例,但它们仍然存在并处理事件。

重要提示 最小和最大深度值是近似值。因此,当您将绘制深度设置为接近这些限制的值时,您正在绘制的内容可能不会被绘制。

注意无法 在 Draw 事件中设置实例的深度 (所有其他事件都可以)。不过,您可以使用 gpu_set_depth 设置在 Draw 事件中绘制事物的深度。

请记住,修改实例的深度可能会更改哪些过滤器&效果应用于该实例,因为将深度更改为低于FX层的深度将不再对实例应用其效果。

 

语法:

depth;

 

返回:

Real (single precision floating point value)

 

例子:

if (y != yprevious)
{
    depth = -y;
}

上面的代码将检查Y位置是否已更改,如果已更改,则深度也将设置为与其对应。