Вопрос по 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++ попутно пишу игру.
|
|
| |