Дважды срабатывает функция. 0_о

Программирование на Юнити.

Дважды срабатывает функция. 0_о

Сообщение Battou 08 янв 2011, 23:50

В общем, простейшая функция по работе с массивом. Поочереди передаёт в Юнити элементы массива (да, я кое как вроде сделал). Вот только она почему-то срабатывает 2 раза, тоесть два раза подряд записывает данные в массив. Сколько не тыкался в разные конци кода, так и не смог понять в чём прикол. Может кто скажет где косяк?? Да, ограничивать запуск в скрипте Юнити пробовал, на случай если по нажатию клавиши он просто успевал два раза запрос отправить. Но дело не в этом.(


Кот на странице:
Синтаксис:
Используется javascript
                function GetFriends() {
                                var unity = GetUnity();
                                var o;
                                var i;
                               
                                var arr = Array();
                                arr[0] = "Zero";                               
                                arr[1] = "One";
                                arr[2] = "Two";

                                o = arr.length;
                               
                                for(j=0;j<o;j++){
                                        i=arr[j];
                                        unity.SendMessage("GameObject","SetFriends", i);
                                };
                };
 



Код скрипта для обращения к функции на странице:
Синтаксис:
Используется javascript

var from = new Array();
var fro;
var count=0;

function Update () {
        if (Input.GetKeyDown(KeyCode.LeftArrow)){
                Application.ExternalCall("GetFriends");
        }
}

function SetFriends(tex){
        fro=tex;
        from.Add(fro);
}

function OnGUI () {
        GUI.Label (Rect (10, 0, 500, 20), "Length:  " + from.length+"  Array:  "+from);
}
 


Тоесть должен выдавать"Length: 3 Array: zero,one,two"

А выдаёт "Length: 6 Array: zero,one,two,zero,one,two"
Battou
UNIт
 
Сообщения: 116
Зарегистрирован: 24 ноя 2010, 18:08

Re: Дважды срабатывает функция. 0_о

Сообщение Battou 09 янв 2011, 14:57

Никто не может помочь?((
Battou
UNIт
 
Сообщения: 116
Зарегистрирован: 24 ноя 2010, 18:08

Re: Дважды срабатывает функция. 0_о

Сообщение Левш@ 09 янв 2011, 15:26

Странно что только 2 раза... у меня несколько раз запускало, при чем вдогонку.
Я стал применять переменные - заглушки.
Вызов функции по условию состояния переменной, сразу после условия меняем значение, и возвращаем значение в конце вызванной функции.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Дважды срабатывает функция. 0_о

Сообщение Battou 09 янв 2011, 15:29

Пробовал, но всё равно 2 раза срабатывало.. хотя я пробовал на стороне Юнити. Сейчас попробую на стороне страницы.

Спасибо.

А почему так происходит?? Слишком быстро обрабатывается что ли?
Battou
UNIт
 
Сообщения: 116
Зарегистрирован: 24 ноя 2010, 18:08

Re: Дважды срабатывает функция. 0_о

Сообщение Battou 09 янв 2011, 15:37

Да, с "заглушками работает как надо. Спасибо большое.)) Что-то я додумался сделать это в Юнити, но не пёхал сделать на странице. )) И всё же интересно почему так получается...
Battou
UNIт
 
Сообщения: 116
Зарегистрирован: 24 ноя 2010, 18:08

Re: Дважды срабатывает функция. 0_о

Сообщение Левш@ 09 янв 2011, 16:51

И всё же интересно почему так получается...

Все правильно, вызов идет из Update, а там каждый кадр вызываеться функция.
Потому меня и удивило что только 2 раза. Я не знаю точного механизма, но вызовы гдето запоминаються (такое впечатление).
У меня успевало по 5-10 раз запускать функции, хотя внутри функции уже стояли заглушки. После чего я понял что заглушки надо переносить в
Update и ставить сразу перед вызовом функции. :D
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6