使用此功能,您可以在房间内的任何给定点和指定的图层上创建指定对象的新实例。可以使用层 ID 值 (由函数 layer_create 返回) 或层名称 (作为字符串,例如 "instance_layer") 来标识,如 房间编辑器 。
此函数返回新实例的 id,然后可以将其存储在变量中并用于访问该实例。请注意,该函数还将在 之前 调用正在创建的实例的 创建事件 ,继续调用该函数的事件的代码或操作。
重要提示 最小和最大层深度为 -16000 到 16000。放置在该范围之外的图层上的任何内容都不会被绘制,尽管该图层上任何内容的所有事件仍将正常运行。
注意 当您在同一事件中调用房间更改函数后调用该函数时,该函数的行为会有所不同。有关详细信息,请参阅有关 room_goto 的注释。
最后一个参数var_struct是可选的,它采用一个包含新实例的其他变量的结构。
此结构中的变量在的创建事件运行前应用于新实例,但之后的变量定义被设置。
这意味着该结构的值在新实例的"创建"事件中是可读的。参见底部的示例2。
通过此结构应用于新实例的值可以是任何类型的,包括方法变量。内置变量也可以更改。
注意结构中的变量"浅拷贝"到新实例,这意味着通过引用复制任何数组、结构和其他资源,而不是复制。
instance_create_layer(x, y, layer_id, obj, [var_struct]);
参数 | 类型 | 描述 |
---|---|---|
x | Real | 将创建对象的X位置 |
y | Real | 将创建对象的Y位置 |
layer_id | Layer or String | 要将创建的实例指定给的层ID(或名称 |
obj | Object Asset | 要创建实例的对象的对象索引 |
var_struct | Struct | 可选带变量的结构,可分配给新实例 |
var inst = instance_create_layer(x, y, "Instances", obj_bullet);
with (inst)
{
speed = other.shoot_speed;
direction = other.image_angle;
}
上面的代码在"Instances"层中创建对象obj_bullet的新实例,并将实例ID存储在变量中。然后,此变量用于为新实例指定速度和方向。
这将首先创建实例,运行其创建事件,然后为其变量赋值。
如果您想在创建事件运行之前分配一些变量,请参阅下面的示例。
var inst = instance_create_layer(x, y, "Instances", obj_bullet,
{
speed : shoot_speed,
direction : image_angle
});
上面的代码创建obj_bullet的实例,并作为最后一个参数传入一个结构。
该结构具有速度和方向变量。它从调用实例提取其值,而无需使用other。
这些变量在新实例的创建事件运行之前被应用到新实例。
不限于结构文字,因为还可以传递存储现有结构的变量,或从constructor创建new结构。