forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Print вешает юнити намертво. (http://forum.boolean.name/showthread.php?t=13789)

Slayer 27.11.2010 19:14

Print вешает юнити намертво.
 
Народ, вы как специалисты не подскажите, вставляю в кусочек когда print и юнити намертво повисает.
Вот кусочек когда:
PHP код:

else {
              
float ratioX 1.0f/(float)(w2/(w-1));
              
float ratioY 1.0f/(float)(w2/(h-1));
              for(
int y=0;y<w2;y++)
              {
                    
int yy = (int)Mathf.Floor(y*ratioY);
                    
int y1 = (int)yy*w;
                    
int y2 = (int)(yy+1)*w;
                    
int yw y*w2;
                    for(
int x=0;x<w2;x++)
                    {
                        
int xx = (int)Mathf.Floor(x*ratioX);
print(
"xx="+xx);                    
                        
Color b1 mapColors[y1+xx];
                        
Color br mapColors[y1+xx+1];
                        
Color t1 mapColors[y2+xx];
                        
Color tr mapColors[y2+xx+1];
//print("yy="+yy+",y1="+y1+".y2="+y2+",yw="+yw+",xx="+xx);                    
                        
float xLerp = (float)x*ratioX-xx;
                         
map[yw+x] = Color.Lerp(Color.Lerp(b1brxLerp), Color.Lerp(t1trxLerp), y*ratioY-yy);
                    }
               }
            } 

в чем может быть загадка природы, ведь без принта проблем нет.

den 27.11.2010 19:20

Ответ: Print вешает юнити намертво.
 
А какую ошибку выдаёт? (меню сверху - окна - консоль). На каком языке пишеш?
На JS поидее должно работать (если проблема действительно в нём).
На C# нет, надо интовскую переменную перевести в String (xx.ToString() допустим)

Slayer 27.11.2010 19:38

Ответ: Print вешает юнити намертво.
 
Если без принта то выдает:
Код:

IndexOutOfRangeException: Array index is out of range.
test1.Awake () (at Assets/test1.cs:85)

А с принтом вешается сразу и только убивать процесс остается.
перевожу с JS на шарп

pax 27.11.2010 19:43

Ответ: Print вешает юнити намертво.
 
Сколько итераций в циклах? чему равно w2? С учетом того что суммирование строк очень медленная операция да еще внутри вложенных циклов - да еще вывод результата в консоль это очень медленная операция и ты не дожидаешься ее окончания.
UPD: Сколько ждал?)

Slayer 27.11.2010 19:51

Ответ: Print вешает юнити намертво.
 
Вложений: 1
да вроде не большая, w2=512.
Вот приатачил весь код. Нужно взять текстурку размером 521х512 положить ее в папку resources

pax 27.11.2010 19:55

Ответ: Print вешает юнити намертво.
 
Как бы совет: попробуй выводить в файл, а не в консоль. Консоль юнити не предназначена для вывода более 100к строк за один раз ;)

Slayer 27.11.2010 21:32

Ответ: Print вешает юнити намертво.
 
ок, попробую.

Slayer 27.11.2010 23:04

Ответ: Print вешает юнити намертво.
 
да, оказывается если подождать 12 минут то все выводится :)

jimon 28.11.2010 13:10

Ответ: Print вешает юнити намертво.
 
12 минут на 262 тысячи не очень сложных операций

Dream 28.11.2010 13:16

Ответ: Print вешает юнити намертво.
 
Цитата:

Сообщение от Den (Сообщение 170088)
На C# нет, надо интовскую переменную перевести в String (xx.ToString() допустим)

к слову, если вы добавляете к строке число, то приводить его к строке вручную не обязательно, компилятор сделает это сам

pax 28.11.2010 14:59

Ответ: Print вешает юнити намертво.
 
Цитата:

Сообщение от jimon (Сообщение 170152)
12 минут на 262 тысячи не очень сложных операций

262к операций множественной конкатенации строк (хоть бы использовали StringBuilder для этого), плюс сравнения, т.к. Unity не выводит в консоль повторяющиеся логи. Плюс вывод информации в консоль места, откуда была вызвана функция print (Debug.Log()) для навигации по коду.
Если это не сложные операции, то извиняйте, сделайте быстрее

pax 28.11.2010 17:05

Ответ: Print вешает юнити намертво.
 
2ABTOMAT незачто ;)


Часовой пояс GMT +4, время: 14:11.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot