Кнопки в Юнити

И снова я с глупыми вопросами. Есть ТабБар на Юнити. Каждый таб в нем представляет из себя геймобджект, внутри которого лежит текст (http://prntscr.com/qq9bz4), а также имеет такие скрипты : http://prntscr.com/qq9bkz .

Мне надо сделать, чтобы кликабельная область была больше самого таба, потому как на мобилке очень сложно туда попасть пальцем. Но в то же время размер таба не должен поменяться, потому как там все рассчитано.

Итак, я попыталась на уровень с текстом добавить еще один геймобджект, но с границами, выходящими за AllTabs, навесила на него скрипт Button, а с AllTabs, разумеется, сняла. Клик не работает.

Не пойму, что я не так делаю.

А On Click там есть?

image

В консоли ошибок никаких нет?

Да, онКлик есть.
Ошибок нет. По крайней мере, связанных с кнопкой.
Меня еще смущает вот это:


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

З.Ы. Как сюда картинки вставлять, чтоб их сразу видно было?

драгндропнуть или Ctrl+V, или прямую ссылку
FAQ, отличия от классических форумных движков

А анимация при клике есть?

Еще в гугле пишут https://answers.unity.com/questions/889908/i-created-an-ui-button-but-click-does-not-work.html

Анимации нет, она там не задумывалась.

Все условия соблюдены.

З.Ы. Чет у меня вообще в принципе кнопку не получается сделать, даже на пустом проекте.

Кинула на сцену кнопку (через меню именно кнопку создала - она сама создала канвас и в нем очутилась). Создала скрипт с функцией void onClick(), в котором прописала Debug.Log(“click”); . Скрипт навесила в онКлик кнопки (хотя странно, почему мне не дало выбрать функцию, которую я хочу навесить, а надо было прописать руками). EventSystem тоже кинула на сцену, но ничего с ней не делала. Короч, клик не сработал. Где я туплю?

Ну там же есть стандартная. Я о том, что не перекрывает ли ее что-то )

хм, в 2018.4 там вроде нельзя ничего писать.

В слот слева-снизу просто переносится любой объект/компонент откуда угодно как обычно.

Peek 2020-01-21 20-11

Чет я туплю, совсем забыла, как с Юнити-редактором работать.

Да, все нормально показывается, просто я в то место, куда скрипт надо засовывать, объект кнопки впихнула.

Короче, сделала все в отдельном проекте. Итого: пока на внутреннем объекте висит текст, все нормально работает. Как только его удаляешь - ничего не работает.

Итого у меня такая иерархия:
image



И не работает. Но если поставить вот так:
image
и расширить тексту границы до нужного размера, то работает все.

Ради эксперимента с нормально работающей обычной кнопки удалила Image и CanvasRenderer, остался только Button и скрипт с OnClick() - работает, блин, все! Я вообще не понимаю тогда, в чем проблема.

Тут говорят, что дело может быть в опции Raycast Target, но вроде ж она стоит. :thinking:
https://forum.unity.com/threads/5-5-if-i-delete-text-component-from-ui-button-the-button-stops-working.455253/

Я тоже так подумала. Но она есть лишь у текста. А у меня должно кликаться на тот геймобджект, на котором стоит скрипт баттон. К тому же я для опыта отключала этот райкаст у текста обычной кнопки - и на нее все равно нажималось.

Удалила текст - не работает нажатие. Добавила кнопке имейдж - заработало.

Получается, я не могу сделать кнопку, чтоб была без текста и имейджа и чтоб на нее кликалось?

Видимо да, изначально ж был Image, и в стандартной кнопке.

Ну или может у чего-то еще есть этот Raycast Target.

А как вообще по-умному сделать кнопку, у которой область клика больше, чем картинка?

Моя память может меня подводить, но на юнити такое 5 лет назад можно было сделать.

Гугл предлагает разные варианты от прозрачной картинки в родительском элементе до каких-то скриптов.

Еще вроде пустой текстовый элемент ресайзнуть можно.

apparently the best way to increase the collision area of a button is to add a UI Text element as a child.
Unlike UI Image, Text can be left blank and freely resized, creating an invisible collider box without any alpha overhead.