0

每次我运行我的小游戏时,它都会向我抛出以下致命错误:

错误
行动号 2
触发事件:
对于对象 obj_y:

为不存在的对象创建实例:100012

我不知道是什么原因造成的。我唯一一次使用 obj_y,是在一个文件中。当我评论那部分时,它仍然不停地唠叨它不存在。

我的代码:

var randomxnumber;
var randomynumber;
var randomarraynumber;
var array;
var snelheid;
snelheid = 3.5;

array[0] = obj_a;
array[1] = obj_b;
array[2] = obj_c;
array[3] = obj_d;
array[4] = obj_e;
array[5] = obj_f;
array[6] = obj_g;
array[7] = obj_h;
array[8] = obj_i;
array[9] = obj_j;
array[10] = obj_k;
array[11] = obj_l;
array[12] = obj_m;
array[13] = obj_n;
array[14] = obj_o;
array[15] = obj_p;
array[16] = obj_q;
array[17] = obj_r;
array[18] = obj_s;
array[19] = obj_t;
array[20] = obj_u;
array[21] = obj_v;
array[22] = obj_w;
array[23] = obj_x;
array[24] = obj_y;
array[25] = obj_z;

randomxnumber = random_range(0, 50);
randomynumber = random_range(-10, -50);
for (int = 0; int < 20; int += 1){
    if(randomxnumber >= window_get_width()){
        randomxnumber -= 100;
    } else {
        randomxnumber += 50;
    }
    randomynumber -= 50;
    array[int] = instance_create(randomxnumber, randomynumber, array[random_range(0, 26)]);
    with(array[int]){
        vspeed = snelheid;
    }
}

我的 obj_y 对象: obj_y 对象

快速说明,我使用的是 GameMaker 8.1 标准版。我是愚蠢的,只是错过了一些东西吗?

4

1 回答 1

0

这是非常奇怪的代码,我不明白你想做什么。

虽然有两个错误。

array[random_range(0, 26)]

应该

array[irandom_range(0, 25)

GM 会舍入数组的索引,因此如果值大于 25(25.1 等),您将超出数组范围。

第二。

array[int] = instance_create(...)

实例的 id 将存储到数组中。不是对象的 ID。但instance_create需要对象索引。object_index您可以使用变量获取对象的索引:

array[int] = instance_create(randomxnumber, randomynumber, array[irandom_range(0, 25)].object_index);
于 2018-01-13T03:00:31.653 回答