sequence_instance_override_object

使用此函数,您可以用另一个实例覆盖(替换)序列中使用的对象的所有实例,或用现有实例覆盖对象的单个实例。

为要替代的对象提供序列实例结构 ID(在房间中创建序列实例时返回,或使用房间层函数之一时返回),请参见here),以及对象索引(如资源浏览器中定义)。最后,您给出一个对象索引或实例ID作为要覆盖序列的对象(提供实例ID将简单地使用创建实例的对象作为替代)。请注意,这只能在序列实例(而不是序列对象)上完成,并且必须在序列开始播放之前完成,否则它将不起作用。

重要如果将此函数与具有相同对象资源的多个对象轨迹的序列实例一起使用,并且提供了实例 ID 作为第二个参数,则只有第一个实例被给定实例替换。其他对象轨迹将不会获得实例。

重要如果提供现有实例 ID,则实例将停留在它已经所在的层上。实例未移动到序列实例/元素所在的层。这与使用layer_sequence_create在层上创建序列实例不同,在该层上,所有实例都与sequence元素一起添加到层中。

语法:

sequence_instance_override_object(sequence_instance_struct, object_id, instance_or_object_id);

参数类型描述
sequence_instance_structSequence Instance Struct要修改的序列实例结构。
object_idObject Asset序列中要覆盖的对象的对象索引。
instance_or_object_idObject Asset or Object Instance用于覆盖序列对象的对象索引或实例ID.

 

返回:

N/A

 

示例 1:用另一个对象 ID 替换对象 ID

var _seq = layer_sequence_create("Background", 0, 0, seq_AnimatedBackground);
var _seq_inst = layer_sequence_get_instance(_seq);
sequence_instance_override_object(_seq_inst, obj_Trees_Winter, obj_Trees_Summer);

上述代码在给定层上创建新的序列实例,然后对其进行修改,使得对象"obj_Trees_Winter"的所有实例被对象"obj_Trees_Summer"的实例替换。

示例 2:将对象 ID 的第一个实例替换为实例 ID

var _seq = layer_sequence_create("Background", 0, 0, seq_AnimatedBackground);
var _seq_inst = layer_sequence_get_instance(_seq);
var _inst = instance_find(obj_Tree_Christmas, 0);
if (_inst != noone)
{
    sequence_instance_override_object(_seq_inst, obj_Trees_Winter, _inst);
}

上面的代码在"背景"层上创建一个新的序列实例。然后,它尝试使用instance_find查找"obj_Tree_Christmas"的实例。 如果找到此对象的实例,则使用sequence_instance_override_object用此实例替换序列中对象"obj_Trees_Winter"的第一个实例。 具有"obj_Trees_Winter"的所有其他对象轨迹将不具有实例。