使用此函数,可以在房间内任意给定点和指定深度创建新的指定对象实例。深度可以是任何值,其中深度越低,"越靠近"摄像机,而深度越高,则越远,那么深度-200处的实例将绘制在深度+300(例如)处的实例上。
请注意,此函数实际上会为实例创建一个房间层,因为所有实例 必须 位于房间的某个层上,但由于这是一个 托管 层 (即:不是您创建的层) 通过代码或在房间中,但由 GameMaker 自动创建)。您无法访问该层,并且 layer 实例变量将返回 -1。
重要 最小和最大层深度为 -16000 到 16000。放置在该范围之外的图层上的任何内容都不会被绘制,尽管该图层上任何内容的所有事件仍将正常运行。
注意 当您在同一事件中调用房间更改函数后调用该函数时,该函数的行为会有所不同。有关详细信息,请参阅有关 room_goto 的注释。
此函数返回新实例的 id,然后可以将其存储在变量中并用于访问该实例。请注意,在继续执行调用该函数的事件的代码或操作 之前,此函数还将调用正在创建的实例的 Create Event。
最后一个参数var_struct是可选的,它采用一个包含新实例的其他变量的结构。
此结构中的变量在的创建事件运行前应用于新实例,但之后的变量定义被设置。
这意味着该结构的值在新实例的"创建"事件中是可读的。参见底部的示例2。
通过此结构应用于新实例的值可以是任何类型的,包括方法变量。内置变量也可以更改。
注意 结构中的变量被 " 浅复制 " 到新实例,这意味着任何数组、结构和其他资源都通过引用复制,而不是重复。
instance_create_depth(x, y, depth, obj, [var_struct]);
参数 | 类型 | 描述 |
---|---|---|
x | Real | 将创建给定对象实例的 x 位置 |
y | Real | 将创建给定对象实例的 y 位置 |
depth | Real | 要将创建的实例分配给的深度 |
obj | Object Asset | 要创建实例的对象的对象索引 |
var_struct | Struct | 可选 一个结构体,其中包含要分配给新实例的变量 |
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 事件,然后为其变量赋值。
如果您想在创建事件运行之前分配一些变量,请参阅下面的示例。
var inst = instance_create_depth(x, y, -100, obj_bullet,
{
speed : shoot_speed,
direction : image_angle
});
上面的代码创建obj_bullet的实例,并作为最后一个参数传入一个结构。
该结构具有速度和方向变量。它从调用实例提取其值,而无需使用other。
这些变量在新实例的创建事件运行之前被应用到新实例。
您不仅限于结构体字面量,因为您还可以传入存储现有结构体的变量,或者从 构造函数 创建 新 结构体。