Чи слід в графічному інтерфейсі обробляти вхід при натисканні або відпуску кнопки?


12

У системі меню для нашої гри (вибір рівнів, параметрів тощо) гравець натискає кнопку на геймпаді, щоб перейти до наступного екрану. Я зашифрував систему меню, щоб зачекати, поки кнопка не буде відпущена, перш ніж робити якісь дії (тобто відображення наступного екрана). Деякі нещодавні відгуки про відтворення пропонують зробити це навпаки: вжити заходів, як тільки натиснути кнопку. Мені цікаво, який стандартний спосіб цього обробляється, і чи це навіть має значення?

Відповіді:


32

У грі , яка контролюється геймпадом, де входи управління безпосередньо змінити GUI фокус з однієї кнопки на іншу GUI, ці кнопки GUI повинні бути активовані , коли кнопка перебуває контролер натиснута .

У грі, якою керує миша (або якщо геймпад використовується для переміщення віртуального курсору миші по екрану), екранні кнопки повинні бути активовані, коли кнопка миші / контролера буде відпущена над тією ж кнопкою, на якій вона була пресований . (Якщо натискання відбулося над однією кнопкою GUI, а потім миша була переміщена та відпущена над іншою кнопкою GUI, жодна кнопка GUI не активована)

Причиною цього є те, що навички управління мишею людей дуже мінливі, і часто люди мають невеликі проблеми з розміщенням курсору саме там, де вони цього хочуть, або навіть точно говорять, над якою кнопкою GUI вони навішуються на даний момент. Теорія полягає в тому, що люди можуть натискати і утримувати кнопку миші, щоб виділити кнопку GUI виділенням, і якщо ця кнопка GUI була не тією, яку вони мали намір використовувати, вони можуть перемістити курсор від неї, перш ніж відпустити кнопку миші для того, щоб щоб уникнути його натискання.

Але якщо вашою грою керує геймпад, то ви абсолютно хочете вжити заходів, коли натиснути кнопку геймпада, а не коли її відпустити.

Редагуйте через п'ять років:

З часу, коли ця відповідь була опублікована, почав з'являтися новий стандарт для управління курсорами в стилі миші, якими керують геймпади.

У відповіді вище я запропонував реалізувати їх так, щоб вони працювали точно так само, як курсори, якими фактично керують миші; виділіть при натисканні миші, активуйте при натисканні миші, якщо курсор все ще знаходиться над тим самим елементом GUI.

Але тепер, керовані геймпадом курсори, як правило, активують графічний інтерфейс після того, як кнопка геймпада утримується протягом певного часу(як правило, приблизно одну секунду). Якщо ви збираєтеся дотримуватися цієї системи, вам потрібно мати екранний індикатор, який показує, як довго відбудеться активація (часто це невелике дзвінок навколо самого курсору, який заповнюється, коли ви наближаєтесь до активації клавіша, що наближається), і вам все одно потрібно виділити елемент, який буде активовано під час натискання кнопки (і це може бути гарною ідеєю зробити це будь-коли, коли миша перебуває над елементом, навіть якщо кнопка не утримується). Під час утримування кнопки курсор не повинен бути в змозі переміщатися, щоб уникнути випадкових активацій елементів графічного інтерфейсу, якщо курсор переміщується в останній момент.

Перевага цієї системи полягає в тому, що вона дозволяє користувачеві, у якого курсор у стилі миші перебуває над неправильним місцем, уникнути активації цього елемента, просто відпустивши кнопку достроково; миша в стилі "відійти від нього перед тим, як випустити" - менш природно це зробити на геймпаді, ніж за допомогою миші, і такий підхід дозволяє користувачеві геймпада набагато легше переривати небажане клацання.

Ми навіть починаємо бачити кілька ігор, що експериментують із цією моделлю взаємодії курсорів, навіть коли їх курсор переміщується реальною мишкою. Ніхто не небо це не робить, як один із прикладів. Цікаво буде побачити, чи стане цей підхід до управління взаємодією миші та курсора все більш поширеним та очікуваним у найближчі роки.


10
+1. Дію слід вживати при звільненні миші, а не вниз. Однак, щоб це було ефективно, важливо, щоб елемент GUI сам змінив візуальний стан при події миші.
Kylotan

+1 для повернення, щоб оновити питання протягом 5 років, щоб воно було актуальним.
lozzajp

Кожен раз, коли хтось оприлюднює або коментує одну із моїх старих відповідей, я перечитую її, щоб переконатися, що вона все ще актуальна. :)
Тревор Пауелл

1

Я б вжив заходів, як тільки натиснута клавіша.

Найкращий приклад, коли дія відбулася після звільнення ключа, - в Starcraft: Broodwar. Коли я натискав би клавіші дуже швидко, я часто натискав наступну клавішу, перш ніж повністю звільнити попередню, що призвело до ігнорування деяких команд. (1A Click, 2A Click, 3A Click - 2 буде проігноровано)

Це було змінено в Warcraft III, і в грі відчули себе набагато чуйніше, як результат, і у мене ніколи не було проблем з «липкою контрольною групою» від Broodwar.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.