Понедельник, 25 Ноября 2024, 22:38

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Error: unable to find any instance for object
Fill_FreemanДата: Суббота, 01 Августа 2015, 14:44 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Привет!

Вкратце: есть много экземпляров obj_ball.
При соударении друг с другом периодически выскакивает такая ошибка:

Код
FATAL ERROR in
action number 1
of  Step Eventobj_ball
for object obj_ball:

Unable to find any instance for object index '<ИНДЕКС>' name '<undefined>'
  at gml_Script_scr_adding_ball (line 14) - physics_joint_rope_create(ball_1, ball_2, ball_1.x, ball_1.y, ball_2.x, ball_2.y, 32, true);
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_scr_adding_ball (line 14)
called from - gml_Object_obj_ball_CollisionEvent_1_1 (line 9) - scr_adding_ball(self, other);


В collusion ивенте obj_ball с таким же объектом, я вызываю скрипт - scr_adding_ball(self, other). Вот его код:

Код
var ball_1 = self.id;
var ball_2 = other.id;

with (obj_molekula) {
      if (ds_list_find_index(atoms, ball_1) == -1) {
         ds_list_add(atoms, ball_1);
      }
}

physics_joint_rope_create(ball_1, ball_2, ball_1.x, ball_1.y, ball_2.x, ball_2.y, 32, true);// - ОШИБКА НА ЭТОЙ СТРОЧКЕ


Дебагер в момент ошибки показывает, что объект c индексом из ошибки существует.

не могу понять в чем может быть проблема.

Есть какие-нибудь идеи?


YellowAfterlifeДата: Воскресенье, 02 Августа 2015, 01:06 | Сообщение # 2
Сейчас нет на сайте
Ошибка кажется немного мистической, но для начала ее источник можно локализовать - выставить каждый параметр в скрипте на отдельную строку, или в отдельную переменную - тогда отладчик укажет на отдельно взятую строку с бедами.
Код не выглядит поломанным, но могу сделать предположение - с некоторых пор instance_destroy() исключает экземпляр из списка мгновенно, и по ID к нему больше обратиться нельзя. То есть:
instance_destroy();
show_debug_message(self.x); // ок
show_debug_message(self.id.x); // ошибка


Fill_FreemanДата: Среда, 05 Августа 2015, 11:43 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Дабы завершить тред:

Я до-конца так и не нашел ошибку, но сделал так и это вроде работает:
1 - убрал вызов по id везде кроме (наверное это не обязательно, но все же):
2 - тех мест, где я вызываю скрипты через self.id или other.id (без id это -1 и -2 соответсвенно)
3 - добавил if instance_exist() условие, которое проверяет существует ли этот объект.

Видимо, я просто не подчищаю где то за собой списки, из-за чего потом натыкаюсь на битые айдишники.

P.S. YellowAfterlife, на yoyogames форуме, кстати, предложили вместо script(self.id) использовать script(id)... не знаю, что это дает кроме экономии времени и букв в коде, но все же...




Сообщение отредактировал Fill_Freeman - Четверг, 06 Августа 2015, 08:23
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг