| Вопрос по UI | 
|  | 
| 
| MR_Borg | Дата: Четверг, 11 Декабря 2014, 21:07 | Сообщение # 1 |  |   участник Сейчас нет на сайте | Всем привет, возник вопрос по новому UI. Как у меня было раньше: с помощью GUI рисовал рамки вокруг ГО и выводил его имя над ним. Так же у меня при нажатии на ГО появлялись кнопки над ним.
 Теперь с сонвым UI: как можно все это сделать на новом UI, попытался поискать уроки, в них в основном стандартное тыкание по элементам, создание UI кодом всего в 1 уроке. Может кто подсказать как это можно сделать?
 
 Изучаю C++ попутно пишу игру.
 |  |  |  |  | 
| 
| beril | Дата: Пятница, 12 Декабря 2014, 18:30 | Сообщение # 2 |  |   Я не ленивый, я — энергосберегающий Сейчас нет на сайте | C элементами UI, можно работать, как с обычным GameObject 
 Цитата MR_Borg (  ) Как у меня было раньше: с помощью GUI рисовал рамки вокруг ГО и выводил его имя над ним. Помести над своим обьектом текст и активируй и дезактивируй при необходимости
 
 
   
   Накодил? Убери за собой!
 Инвентарь в Unity(UI)
 Инвентарь в Unity(GUI)
 |  |  |  |  | 
| 
| MR_Borg | Дата: Пятница, 12 Декабря 2014, 18:58 | Сообщение # 3 |  |   участник Сейчас нет на сайте | Вот допустим, раньше у меня так было 
 Так если теперь над каждым объектом лепить, то еще и канвас крутить как то нужно, я как понял все объекты рисуются в локальных координатах канваса и один в режмиме Screen Space - Overlay не поможет?
 
 Изучаю C++ попутно пишу игру.
 |  |  |  |  | 
| 
| beril | Дата: Пятница, 12 Декабря 2014, 19:20 | Сообщение # 4 |  |   Я не ленивый, я — энергосберегающий Сейчас нет на сайте | Цитата MR_Borg (  ) Так если теперь над каждым объектом лепить, то еще и канвас крутить как то нужно, я как понял все объекты рисуются в локальных координатах канваса и один в режмиме Screen Space - Overlay не поможет? Нет канвас может быть один. Что бы текст можно было крепить над обьектами в 3д пространстве, нужно в Canvas поставить World Space
 
 Цитата MR_Borg (  ) for(i=0;i<MAX;i++) {
 GUI.Button(object.x,object[i].y'//////); Т.е. рисую кнопки, таблички и т.д. Все в одном цикле без проблем.
 }
 
 Рисовать теперь ниче не надо, нужно просто создать обьекты
 как то так
 
 for(i=0;i<MAX;i++)
 {
 GameObject go = Instantiate(наш обьект) as GameObject;
 go.GetComponent<RectTransform>().localPosition = new Vector3(значение) или new Vector2();
 }
 
 
 [i]<RectTransform> это тоже самое, что и Transform у GO, только <RectTransform> используется в элементах UI
 
 Примерно так (под рукой нету щас unity поэтому более точно сказать не могу) Но руками выставить позицию текста будет лучше (мне так кажется)
 
 
   
   Накодил? Убери за собой!
 Инвентарь в Unity(UI)
 Инвентарь в Unity(GUI)
 
 
 Сообщение отредактировал beril - Пятница, 12 Декабря 2014, 19:31 |  |  |  |  | 
| 
| MR_Borg | Дата: Пятница, 12 Декабря 2014, 20:13 | Сообщение # 5 |  |   участник Сейчас нет на сайте | Если вешать на каждый ГО свой канвас не сильно ли это нагружать будет? Создал куб, на него повесил канвас: как я понял режим нужен WorldSpace- только вот теперь текст всегда в одну сторону смотрит, видать теперь еще и канвас крутить на камеру придется. Какой кошмар, видать придется дальше на GUI сидеть.
 
 Изучаю C++ попутно пишу игру.
 |  |  |  |  | 
| 
| beril | Дата: Пятница, 12 Декабря 2014, 20:39 | Сообщение # 6 |  |   Я не ленивый, я — энергосберегающий Сейчас нет на сайте | Цитата MR_Borg (  ) Если вешать на каждый ГО свой канвас не сильно ли это нагружать будет? А зачем под каждый ГО создавать отдельный Canvas ?
 
 
   
   Накодил? Убери за собой!
 Инвентарь в Unity(UI)
 Инвентарь в Unity(GUI)
 |  |  |  |  | 
| 
| Daly | Дата: Пятница, 12 Декабря 2014, 20:47 | Сообщение # 7 |  |   постоянный участник Сейчас нет на сайте | Канвас можешь на сцене поставить один, просто создавай текст и удочерай канвасу, вот и всё   |  |  |  |  | 
| 
| MR_Borg | Дата: Пятница, 12 Декабря 2014, 22:34 | Сообщение # 8 |  |   участник Сейчас нет на сайте | Хорошо, как тогда кодом присвоить позицию какого либо компонента позицию любого ГО. 
 
 Цитата beril (  ) go.GetComponent<RectTransform>().localPosition = new Vector3(значение) или new Vector2(); эта функция вообще ничего не двигает.
 Попытался через GetComponent<RectTransform>().transform.position и прочие вариации. Надпись переносится куда надо(в редакторе), но относительно положения на канвасе отображается неверно.
 
 Изучаю C++ попутно пишу игру.
 |  |  |  |  | 
| 
| beril | Дата: Пятница, 12 Декабря 2014, 22:57 | Сообщение # 9 |  |   Я не ленивый, я — энергосберегающий Сейчас нет на сайте | А ты World Space поставил? 
 
   
   Накодил? Убери за собой!
 Инвентарь в Unity(UI)
 Инвентарь в Unity(GUI)
 |  |  |  |  | 
| 
| MR_Borg | Дата: Пятница, 12 Декабря 2014, 23:40 | Сообщение # 10 |  |   участник Сейчас нет на сайте | Цитата beril (  ) World SpaceВот тут то и весь прикол, он рендерит как есть, т.е какой угол задал такой и будет, придется самому вертеть канвас, чтобы со всех сторон видно было.
 
 Изучаю C++ попутно пишу игру.
 |  |  |  |  |