Страница 1 из 1

Хинт в UGUI ? [решено]

СообщениеДобавлено: 15 апр 2020, 09:21
Woolf
Что-то опять поломал я свою голову )

Есть вот такой хинт, обычно он в скрытом состоянии, но при наведении на иконку появляется
Изображение

При старте игры он приунпарентен к иконке (каждый к своей), но в Start скрипта иконки делается hintPanel.parent = mainCanvas для того, чтобы эти хинты были поверх всего остального интерфейса. И по итогу, он улетает фиг знает куда.
Как сделать так, чтобы хинт не менял свои координаты при репаренте его на на любой UI объект с любыми анкорами и привязками?
Другими словами, как мне получить его глобальную позицию в канвасе и присвоить её?

Также, в качестве бонуса, буду благодарен за подсказку, как подобный хинт вывести на экран рядом с курсором мыши, учитывая, что на канвасе висит CanvasScaler

Re: Хинт в UGUI ?

СообщениеДобавлено: 15 апр 2020, 09:45
1max1
hint.position = obj.position так не работает? Они на одном и том же канвасе?

Re: Хинт в UGUI ?

СообщениеДобавлено: 15 апр 2020, 09:47
Woolf
1max1 писал(а):hint.position = obj.position так не работает? Они на одном и том же канвасе?


к сожалению, не работает..
они на одном и том же канвасе, но иконка глубоко в грубинах парентов. Иконки на панелях, да еще и в скролл-листе.

Re: Хинт в UGUI ?

СообщениеДобавлено: 15 апр 2020, 09:51
Tolking
Есть https://docs.unity3d.com/ScriptReference/RectTransformUtility.html
Есть https://docs.unity3d.com/ScriptReference/RectTransform-anchoredPosition.html

И лучше сделать свой канвас для хинта и в нем назначить ордер. Прям на хинт кинь кавас и переназнач ордер...

Re: Хинт в UGUI ?

СообщениеДобавлено: 15 апр 2020, 10:59
1max1
к сожалению, не работает..

Что это значит? Позиция будет одна и та же, кавас - один и тот же, значит все должно работать.
1. Парентишь хинт к канвасу, именно в канвас, а не в иконку или еще куда-то hint.transform.SetParent(canvas).
2. Ставишь порядок хинту на последний hint.transform.SetAsLastSibling().
3. Устанавливаешь такую же позицию что и иконке hint.position = icon.position.
Если у тебя 2 канваса, которые могут перекрывать друг друга, есть смысл сделать отдельный канвас для хинтов с большим приоритетом отрисовки.

Re: Хинт в UGUI ?

СообщениеДобавлено: 15 апр 2020, 12:09
Woland
Получаешь screen координаты объекта, куда тебе нужно поставить тултип
Потом в коде пишешь
Синтаксис:
Используется csharp
тултип.GetComponent<RectTransform>().anchoredPosition=screen координаты объекта - new Vector3(Screen.width / 2, Screen.height / 2, 0)
 

Re: Хинт в UGUI ?

СообщениеДобавлено: 16 апр 2020, 05:06
Woolf
Спасибо всем ответившим, реально, помогли, узнал много нового )