Как стать автором
Обновить

Комментарии 3

CanvasGroup.interactable не отключает горячие клавиши. У себя использую "новую" InputSystem и её деактивирую (это и мышь и клавиши). Другого решения пока не придумал.

Отсутствие прокрутки списков и излишнее использование drag&drop - это всё же проблемы дизайна UI, а не кода.

Разбирать код проекта 10-летней давности ещё и через декомпиляцию - ну такое себе. Движок поменялся за это время, а декомпилятор никогда не выдаст именно тот код, который был написан.

Решение: использовать InputSystem

Самая сырая её версия появилась в 2018, а игра, код которой Вы разбираете, вышла на 2 года раньше.

  • в некоторых местах длительность DOTween анимации и длительность ожидания (WaitForSeconds) разные, уверен что это ошибка и они должны быть одинаковыми

Скорее всего как раз сделано намеренно, например, когда нужно отдать управление игроку до того как отыграется вся анимация. И именно поэтому используются coroutine, а не OnComplete.

Собственный Debug класс

...

Хорошая идея, но плохо реализованная, потому что логов в релизном билде не будет, но сами вызовы методов и формирование строк останутся.

Решение: для методов добавить атрибут Conditional...

Мог быть кейс, когда при формировании дебажной строки вызывался метод, который что-то менял и это компенсировало какой-то баг. Тогда у вас при тестировании всё будет работать идеально, а на релизном билде (без логов!) будут волшебные баги. Если такой дебаг не просаживает производительность, логов много, а экспертиза в команде хромает, то такое решение оправдано.

Отсутствие прокрутки списков и излишнее использование drag&drop - это всё же проблемы дизайна UI, а не кода.

За реализацию UI отвечает программист и тут:

  • или дизайнер интерфейса строго запретил использовать двойной клик и прокрутку, только перетаскивание и кнопки

  • или программист не знал про PointerEventData.clickCount и IScrollHandler либо в момент сбора требований к UI либо во время реализации UI

По-моему мнению второй вариант гораздо вероятнее, и тогда это проблема с кодом.

Разбирать код проекта 10-летней давности ещё и через декомпиляцию - ну такое себе. Движок поменялся за это время, а декомпилятор никогда не выдаст именно тот код, который был написан.

Декомпилятор логику работы не поменяет, а базовые проблемы с кодом остаются всё те же, что и десять лет назад, и актуальности не теряют.

Самая сырая её версия появилась в 2018, а игра, код которой Вы разбираете, вышла на 2 года раньше.

Да, как вы заметили игра вышла 8 лет и советы авторам немного запоздали, поэтому предлагаю читателям возможные решения на текущий момент.

Скорее всего как раз сделано намеренно, например, когда нужно отдать управление игроку до того как отыграется вся анимация. И именно поэтому используются coroutine, а не OnComplete.

Только вот наоборот: анимация идет 0.5с, а игрок ждет 0.6с.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории