В игре , которая контролируется геймпадом, где входы управления непосредственно изменить GUI фокус с одной кнопки на другую GUI, эти кнопки GUI должны быть активированы , когда кнопка находится контроллер нажата .
В игре, управляемой мышью (или если для перемещения курсора виртуальной мыши по экрану используется геймпад), экранные кнопки должны быть активированы, когда кнопка мыши / контроллера отпущена над той же кнопкой, на которой она находилась. нажал . (Если нажатие произошло над одной кнопкой GUI, а затем мышь была перемещена и отпущена поверх другой кнопки GUI, ни одна из кнопок GUI не активируется)
Причина этого заключается в том, что навыки управления мышью у людей сильно различаются, и часто у людей возникает небольшая проблема с позиционированием курсора именно там, где они этого хотят, или даже с точным указанием, над какой кнопкой графического интерфейса они на данный момент находятся. Теория состоит в том, что люди могут нажать и удерживать кнопку мыши, чтобы выделить кнопку GUI, и если эта кнопка GUI не была той, которую они намеревались использовать, они могут отодвинуть курсор от нее, прежде чем отпустить кнопку мыши, чтобы чтобы избежать нажатия на него.
Но если ваша игра управляется геймпадом, то вам абсолютно необходимо действовать, когда нажата кнопка геймпада, а не когда она отпущена.
Отредактируйте пять лет спустя:
Со времени, когда этот ответ был опубликован, начал появляться новый стандарт для работы с курсорами в стиле мыши, которые управляются геймпадами.
В ответе выше я предложил, чтобы они были реализованы так, чтобы они работали точно так же, как курсоры, которые фактически управляются мышами; выделите при наведении мыши, активируйте при наведении курсора, если курсор все еще находится над тем же элементом GUI.
Но теперь управляемые геймпадом курсоры обычно активируют действие графического интерфейса после того, как кнопка геймпада удерживается в течение некоторого времени(обычно около одной секунды). Если вы собираетесь следовать этой системе, вам понадобится экранный индикатор, показывающий, как долго будет происходить активация (часто это небольшое кольцо вокруг самого курсора, которое заполняется по мере приближения к активации при наведении указателя мыши), и вам все равно нужно выделить элемент, который будет активирован, во время удержания кнопки (и это может быть хорошей идеей, когда мышь находится над элементом, даже если если кнопка не удерживается). Пока кнопка удерживается, курсор не должен быть в состоянии перемещаться, чтобы избежать случайных активаций элементов графического интерфейса пользователя, если курсор толкается в последний момент.
Преимущество этой системы в том, что она позволяет пользователю, чей курсор в стиле мыши находится над неправильным местом, избежать активации этого элемента, просто отпустив кнопку раньше; стиль мыши «отойди от нее перед выпуском» менее естественен для выполнения на геймпаде, чем с помощью мыши, и этот подход позволяет пользователю геймпада отменить нежелательный щелчок намного легче.
Мы даже начинаем видеть, как несколько игр экспериментируют с этой моделью взаимодействия курсоров, даже когда их курсор перемещается реальной мышью. No Man's Sky делает это, как один из примеров. Будет интересно посмотреть, станет ли этот подход к взаимодействию с курсором мыши все более распространенным и ожидаемым в ближайшие годы.