Пятница, 29 Марта 2024, 10:21

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вопрос по UI
Вопрос по 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
постоянный участник
Сейчас нет на сайте
Канвас можешь на сцене поставить один, просто создавай текст и удочерай канвасу, вот и всё wink
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++ попутно пишу игру.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вопрос по UI
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг