instance_create_depth

使用此函数,可以在房间内任意给定点和指定深度创建新的指定对象实例。深度可以是任何值,其中深度越低,"越靠近"摄像机,而深度越高,则越远,那么深度-200处的实例将绘制在深度+300(例如)处的实例上。

请注意,此函数实际上会为实例创建一个房间层,因为所有实例 必须 位于房间的某个层上,但由于这是一个 托管 层 (即:不是您创建的层) 通过代码或在房间中,但由 GameMaker 自动创建)。您无法访问该层,并且 layer 实例变量将返回 -1

重要 最小和最大层深度为 -1600016000。放置在该范围之外的图层上的任何内容都不会被绘制,尽管该图层上任何内容的所有事件仍将正常运行。

注意 当您在同一事件中调用房间更改函数后调用该函数时,该函数的行为会有所不同。有关详细信息,请参阅有关 room_goto 的注释。

此函数返回新实例的 id,然后可以将其存储在变量中并用于访问该实例。请注意,在继续执行调用该函数的事件的代码或操作 之前,此函数还将调用正在创建的实例的 Create Event

可选结构

最后一个参数var_struct是可选的,它采用一个包含新实例的其他变量的结构。

此结构中的变量在的创建事件运行前应用于新实例,但之后变量定义被设置。

这意味着该结构的值在新实例的"创建"事件中是可读的。参见底部的示例2

通过此结构应用于新实例的值可以是任何类型的,包括方法变量。内置变量也可以更改。

注意 结构中的变量被 " 浅复制 " 到新实例,这意味着任何数组、结构和其他资源都通过引用复制,而不是重复。

 

语法:

instance_create_depth(x, y, depth, obj, [var_struct]);

参数类型描述
xReal将创建给定对象实例的 x 位置
yReal将创建给定对象实例的 y 位置
depthReal要将创建的实例分配给的深度
objObject Asset要创建实例的对象的对象索引
var_structStruct可选 一个结构体,其中包含要分配给新实例的变量

 

返回:

Object Instance

 

示例1:

var inst = instance_create_depth(x, y, -100, obj_Bullet);
with (inst)
{
    speed = other.shoot_speed;
    direction = other.image_angle;
}

上面的代码在-100深度处创建对象obj_bullet的新实例,并将实例ID存储在变量中。然后,此变量用于为新实例指定速度方向

这将首先创建实例,运行其 Create 事件,然后为其变量赋值。

如果您想在创建事件运行之前分配一些变量,请参阅下面的示例。

 

示例2:

var inst = instance_create_depth(x, y, -100, obj_bullet,
{
    speed : shoot_speed,
    direction : image_angle
});

上面的代码创建obj_bullet的实例,并作为最后一个参数传入一个结构。

该结构具有速度和方向变量。它从调用实例提取其值,而无需使用other

这些变量在新实例的创建事件运行之前被应用到新实例。

您不仅限于结构体字面量,因为您还可以传入存储现有结构体的变量,或者从 构造函数 创建 结构体。