2d framework ( или просто уроки )

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Re: 2d framework ( или просто уроки )

Сообщение Lestar 06 июн 2011, 11:50

1.Нет,реже
2.НЕ нужно,посмотрите примеры в документации.
3.Все обьекты GUI класса вызываются только в OnGUI.
4.В проекте не делать больше одного OnGUI.

Прочтение документации дает ответ на эти и многие другие вопросы.
Lestar
UNIт
 
Сообщения: 114
Зарегистрирован: 05 июн 2011, 02:36

Re: 2d framework ( или просто уроки )

Сообщение DbIMok 06 июн 2011, 11:55

Lestar писал(а):1.Нет,реже

OnGUI implementation might be called several times per frame (one call per event)
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: 2d framework ( или просто уроки )

Сообщение Lestar 06 июн 2011, 12:02

:ymdaydream: думаем одно пишем другое.
Lestar
UNIт
 
Сообщения: 114
Зарегистрирован: 05 июн 2011, 02:36

Re: 2d framework ( или просто уроки )

Сообщение Zaicheg 06 июн 2011, 12:43

Lestar писал(а):4.В проекте не делать больше одного OnGUI.

Замечу, что это рекомендация.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: 2d framework ( или просто уроки )

Сообщение Lestar 06 июн 2011, 13:00

Сделайте 10 вызовов OnGUI и посмотрите в профайлере что будет если не следовать этой рекомендации.Есть суп ложкой это тоже не панацея,а рекомендация.
Lestar
UNIт
 
Сообщения: 114
Зарегистрирован: 05 июн 2011, 02:36

Re: 2d framework ( или просто уроки )

Сообщение Zaicheg 06 июн 2011, 13:22

Lestar писал(а):Сделайте 10 вызовов OnGUI и посмотрите в профайлере что будет если не следовать этой рекомендации.Есть суп ложкой это тоже не панацея,а рекомендация.

Я ни в коей мере не умаляю пользу от следования вашей рекомендации, а лишь указываю на то, что в перечне из четырёх тезисов три являются, так сказать, правилом, а одно -- рекомендаций, дабы и это одно не было принято за правило.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: 2d framework ( или просто уроки )

Сообщение PoD-Stas 06 июн 2011, 21:13

3.Все обьекты GUI класса вызываются только в OnGUI.
4.В проекте не делать больше одного OnGUI.


Эти два пункта противоречат друг другу :|
PoD-Stas
UNец
 
Сообщения: 30
Зарегистрирован: 09 янв 2010, 16:52

Re: 2d framework ( или просто уроки )

Сообщение Lestar 06 июн 2011, 21:29

Смоделируйте мне подобную ситуацию.То что у вас не получается,не значит,что это не возможно.
Lestar
UNIт
 
Сообщения: 114
Зарегистрирован: 05 июн 2011, 02:36

Re: 2d framework ( или просто уроки )

Сообщение PoD-Stas 06 июн 2011, 21:39

У меня все получается,просто забочусь об оптимизации.
Раз OnGUI() вызывается 4 раза за кадр, то какой мне смысл рисовать в нем кнопочки, например?
Вот, например, написал я скрипт. (знаю, код жутко не оптимизирован и пр, просто только перехожу на яву с плюсов, не знаю, больше она мне, чем шарп приглянулась...) Сам факт из OnGUI я вызываю кучу условий, хотя я мог их более рационально "распихать" в разные части кода... Как-то так.
Синтаксис:
Используется javascript
var tex: Texture;
var tex2: Texture;
public var emo: int;
var emo1: int;
var last: boolean;
var first: boolean;
var Guivar : Guivar;
var go : GameObject;
var go2 : GameObject;
var played: boolean = false;
//var movecamera : camera;
var Gui_old: Gui;
var Gui: Gui;
var Camerascript: camera;
function OnGUI() {
if (first){
        if (GUI.Button(Rect(Screen.width/2-100,Screen.height/2+140,70,40),"Start"))
                StartCoroutine(MyCoroutine());
        if (GUI.Button(Rect(Screen.width/2+30,Screen.height/2+140,70,40),"Retry") && played)
        {
                StartCoroutine(MyCoroutine());
                Guivar.scorekoef=Guivar.scorekoef-0.1;
                };
        }
        if (!first)
        if (GUI.Button(Rect(Screen.width/2-35,Screen.height/2+140,70,40),"Retry")&&played)
        {
                StartCoroutine(MyCoroutine());
                Guivar.scorekoef=Guivar.scorekoef-0.1;
                };
        if (GUI.Button(Rect(Screen.width/2-200,Screen.height/2-100,70,40),"1")&&played)
        {
                if (emo1==1)
                {
                Guivar.score=Guivar.score+1;
                }
                RunAway();
                }
        if (GUI.Button(Rect(Screen.width/2-200,Screen.height/2-20,70,40),"2")&&played)
        {
                if (emo1==2)
                {
                Guivar.score=Guivar.score+1;
                }
                RunAway();
                }
        if (GUI.Button(Rect(Screen.width/2-200,Screen.height/2+60,70,40),"3")&&played)
        {
                if (emo1==3)
                {
                Guivar.score=Guivar.score+1;
                }
                RunAway();
                }
        if (GUI.Button(Rect(Screen.width/2+135,Screen.height/2-100,70,40),"4")&&played)
        {
                if (emo1==4)
                {
                Guivar.score=Guivar.score+1;
                }
                RunAway();
                }
        if (GUI.Button(Rect(Screen.width/2+135,Screen.height/2-20,70,40),"5")&&played)
        {
                if (emo1==5)
                {
                Guivar.score=Guivar.score+1;
                }
                RunAway();
                }
        if (GUI.Button(Rect(Screen.width/2+135,Screen.height/2+60,70,40),"6")&&played)
        {
                if (emo1==6)
                {
                Guivar.score=Guivar.score+1;
                }
                RunAway();
                }
        }
        function MyCoroutine()
    {
                yield WaitForSeconds(1);
                guiTexture.texture = tex2;
                yield WaitForSeconds(0.15);
                emo1=emo;
                guiTexture.texture = tex;
                played=true;
    }
        function PlayStart() {
                animation.Play("move2");
                }
        function RunAway() {
                Debug.Log(Guivar.score);
                animation.Play("move1");
                Gui_old.enabled = false;
                if (last){
//                      Debug.Log("Calculating");
                        go.guiText.text = ("Effectiveness of your lie definition is:");
                        go2.guiText.text = (Guivar.score*100/3*Guivar.scorekoef+" %");
                        Camerascript.enabled = true;
                        }
                else
                        {
                        Gui.enabled = true;
                        Gui.PlayStart();
                        yield WaitForSeconds(3);
                        Gui.MyCoroutine();
                        };
                }
PoD-Stas
UNец
 
Сообщения: 30
Зарегистрирован: 09 янв 2010, 16:52

Re: 2d framework ( или просто уроки )

Сообщение Lestar 06 июн 2011, 22:16

3.Все обьекты GUI класса вызываются только в OnGUI.


Не пойму,что мешает использовать коллекции и привести эту кашу к удобоваримому виду ?
Lestar
UNIт
 
Сообщения: 114
Зарегистрирован: 05 июн 2011, 02:36

Re: 2d framework ( или просто уроки )

Сообщение PoD-Stas 06 июн 2011, 22:31

Коллекции, это типа наследования классов в плюсах? [curved_hands]
PoD-Stas
UNец
 
Сообщения: 30
Зарегистрирован: 09 янв 2010, 16:52

Re: 2d framework ( или просто уроки )

Сообщение Lestar 06 июн 2011, 22:50

Массивы,списки,коллекции значений по ключам.
Lestar
UNIт
 
Сообщения: 114
Зарегистрирован: 05 июн 2011, 02:36

Re: 2d framework ( или просто уроки )

Сообщение seaman 06 июн 2011, 22:54

seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Пред.

Вернуться в Почемучка

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

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