Страница 2 из 4

Re: Производитеьность скриптов

СообщениеДобавлено: 23 май 2009, 15:53
Const_47
Я думаю, что сила жабы в ее общедоступности. Своего рода общий связующий язык Юнити разработчиков для понимания друг-друга. Посмотрите на форум большинство примеров на жабе ;) Сам я выбрал С# по причине супермегаудобства :D программирования на студии.

Что мне не совсем нравится в жабе, так это вот такой тип - var. Если код достаточно большой я перестаю в нем находить "концы" Я хошу четко понимать с каким типом имею дело.

Re: Производитеьность скриптов

СообщениеДобавлено: 23 май 2009, 16:04
Neodrop
Вот для этого (помимо оптимизации) и стоит объявлять переменные непосредственно. типа :
var count : int;

Ну а на форуме, на нём быстрее писать код, для примеров. Быстрее накидать прототип алгоритма. Поэтому, как связующий язык, он очень удобен. Ну и для маленьких, "быстронаписуемых" проектов он замечателен, ничего не скажу. Когда листинг не превышает 500 строк (обобщённо во всех скриптах), ну 1000, Жаба незаменима и молниеносна ( если нет ещё привычки писать Напильником(Шарпом)).

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 23 май 2009, 16:05
Neodrop
Переименовал тему. Так прикольнее. :D

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 23 май 2009, 16:10
gnoblin
В .NET 3.0 - "var" тоже есть :-s

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 23 май 2009, 16:17
Neodrop
В [unity 3D] Юнити мы работаем на .NET 2.0

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 28 май 2009, 10:47
wild_r
Вот руки добрались до замеров, а вот как вычислить текущее время? Гугл не помог.

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 28 май 2009, 11:54
gnoblin
Просто текущую дату? Я выкладывал кусок кода.

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 28 май 2009, 11:58
wild_r
Нет, количество милисекунд от начала года. Чтобы было не слишком большое число и было количество едениц времени от некой точки отсчета. Буду рад, если код сюда кинете.

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 28 май 2009, 13:39
gnoblin
Что ты конкретно хочешь сделать?
Время, прошедшее с запуска игры, хранится в одной из переменных класса Time.

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 28 май 2009, 17:25
Neodrop
Перед началом вычисления записываешь Time.realtimeSienceStartUp
После завершения, получаешь опять и вычитаешь одно из другого.

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 28 май 2009, 18:18
wild_r
Да, я именно эту функцию и искал, спасибо!

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 28 май 2009, 19:56
wild_r
С директивой #pragma strict ругаеться на то, что у гейм обжетка нет рендера.

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 28 май 2009, 21:00
Neodrop
Строку в студию.

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 28 май 2009, 21:42
wild_r
Без директивы все работает, правда разброс времени большой.

Код: Выделить всё
#pragma strict
@script ExecuteInEditMode()


function Start() {
   var objs = new Array();
   var i : Number;
   var j : Number;
   var k : Number;

   var hash = new Array();

   objs = FindObjectsOfType(GameObject);
   j =Time.realtimeSinceStartup;

   for(i=0; i<objs.length;i++){
      hash[i]=1;
   }

   for(i=0; i<objs.length; i++) {
      if(hash[i]==1){
         for (k=j; k<objs.length; k++) {
            if((hash[k]==1)&&(objs[k].renderer.sharedMaterial.GetTexture("_MainTex").name == objs[i].renderer.sharedMaterial.GetTexture("_MainTex").name)){
               objs[k].renderer.sharedMaterial = objs[i].renderer.sharedMaterial;
               hash[k]=0;
            }   
         }
      }
   }
   Debug.Log(Time.realtimeSinceStartup - j);
}

Re: Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 28 май 2009, 21:54
Neodrop
Чтобы работала директива, нужно перед этой строкой :
if((hash[k]==1)&&(objs[k].renderer.sharedMaterial.GetTexture("_MainTex").name == objs[i].renderer.sharedMaterial.GetTexture("_MainTex").name))

Добавить это:
var go : GameObject = objs[k] as GameObject; (если не прокатит просто (GameObject)objs[k];)

и в строке заменить if((hash[k]==1)&&(objs[k].renderer.sharedMaterial.GetTexture

на if((hash[k]==1)&&(go.renderer.sharedMaterial.GetTexture