Trong GUI, nên xử lý đầu vào khi nhấn hoặc nhả nút?


12

Trong hệ thống menu cho trò chơi của chúng tôi (chọn cấp độ, tùy chọn, v.v.), người chơi nhấn nút trên gamepad để chuyển sang màn hình tiếp theo. Tôi đã mã hóa hệ thống menu để đợi cho đến khi nút được nhả ra trước khi thực hiện bất kỳ hành động nào (nghĩa là hiển thị màn hình tiếp theo). Một số phản hồi gần đây của playtest đề nghị chúng tôi thực hiện theo cách ngược lại: thực hiện hành động ngay khi nhấn nút. Tôi tò mò, cách xử lý tiêu chuẩn này là gì, và nó thậm chí còn tạo ra sự khác biệt?

Câu trả lời:


32

Trong một trò chơi được điều khiển bởi một gamepad, nơi kiểm soát đầu vào trực tiếp thay đổi giao diện tập trung từ một nút GUI khác, những nút GUI nên được kích hoạt khi một nút điều khiển được ép .

Trong trò chơi được điều khiển bởi chuột (hoặc nếu gamepad được sử dụng để di chuyển con trỏ chuột ảo quanh màn hình), các nút trên màn hình sẽ được kích hoạt khi nút chuột / bộ điều khiển được nhả trên cùng một nút trên đó ép . (Nếu báo chí xảy ra trên một nút GUI và sau đó chuột được di chuyển và nhả qua một nút GUI khác, không có nút GUI nào được kích hoạt)

Lý do cho điều này là vì các kỹ năng điều khiển chuột của mọi người rất khác nhau và thường mọi người gặp một chút khó khăn khi định vị con trỏ chính xác ở nơi họ muốn hoặc thậm chí nói chính xác nút GUI nào họ đang di chuột vào lúc này. Lý thuyết là mọi người có thể nhấn và giữ nút chuột để làm nổi bật nút GUI và nếu nút GUI đó không phải là cái họ định sử dụng, họ có thể di chuyển con trỏ ra khỏi nó trước khi thả nút chuột theo thứ tự để tránh nhấn nó.

Nhưng nếu trò chơi của bạn đang được điều khiển bằng gamepad, thì bạn hoàn toàn muốn thực hiện hành động khi nhấn nút gamepad chứ không phải khi phát hành.

Chỉnh sửa, năm năm sau:

Trong thời gian kể từ khi câu trả lời này được đăng, một tiêu chuẩn mới đã bắt đầu xuất hiện để xử lý các con trỏ kiểu chuột được điều khiển bởi gamepad.

Trong câu trả lời ở trên, tôi đề nghị rằng những thứ này nên được thực hiện để hoạt động chính xác như con trỏ đang thực sự bị chuột kiểm soát; tô sáng khi thả chuột xuống, kích hoạt khi di chuột lên nếu con trỏ vẫn ở trên cùng một phần tử GUI.

Nhưng bây giờ, các con trỏ điều khiển bằng gamepad thường kích hoạt một hành động GUI sau khi nút gamepad bị giữ trong một khoảng thời gian(thường khoảng một giây). Nếu bạn đang theo dõi hệ thống này, bạn sẽ cần có một chỉ báo trên màn hình cho biết thời gian kích hoạt sẽ diễn ra trong bao lâu (thường thì đây là một vòng nhỏ xung quanh con trỏ, nó sẽ lấp đầy khi bạn đến gần hơn để kích hoạt nút di chuột qua) và bạn vẫn cần làm nổi bật phần tử sẽ được kích hoạt, trong thời gian nút đó được giữ (và có thể là một ý tưởng tốt để làm bất cứ khi nào chuột ở trên một phần tử, thậm chí nếu nút không được giữ). Trong khi nút đang được giữ, không thể di chuyển con trỏ, để tránh kích hoạt ngẫu nhiên các thành phần GUI nếu con trỏ bị chen lấn vào giây phút cuối cùng.

Lợi ích của hệ thống này là cho phép người dùng có con trỏ kiểu chuột ở sai vị trí để tránh kích hoạt thành phần đó bằng cách chỉ cần nhả nút sớm; kiểu chuột "di chuyển ra khỏi nó trước khi bạn phát hành" ít tự nhiên hơn để thực hiện trên gamepad so với chuột và cách tiếp cận này cho phép người dùng gamepad loại bỏ một nhấp chuột không mong muốn dễ dàng hơn nhiều.

Chúng ta thậm chí bắt đầu thấy một vài trò chơi thử nghiệm mô hình tương tác con trỏ này ngay cả khi con trỏ của chúng đang được di chuyển bằng một con chuột thật. No Man's Sky làm điều này, là một ví dụ. Sẽ rất thú vị để xem liệu phương pháp xử lý tương tác chuột-chuột này sẽ ngày càng trở nên phổ biến và được mong đợi trong những năm tới.


10
+1. Các hành động nên được thực hiện trên phát hành chuột, không phải chuột xuống. Tuy nhiên, để điều này có hiệu quả, điều quan trọng là chính phần tử GUI thay đổi trạng thái trực quan trong sự kiện thả chuột xuống.
Kylotan

+1 để quay lại để cập nhật câu hỏi sau 5 năm để giữ cho câu hỏi có liên quan.
lozzajp

Mỗi khi ai đó tán thành hoặc nhận xét về một trong những câu trả lời cũ của tôi, tôi đọc lại nó để đảm bảo rằng nó vẫn được cập nhật. :)
Trevor Powell

1

Tôi sẽ hành động ngay khi nhấn phím.

Ví dụ tốt nhất về hành động diễn ra sau khi khóa được phát hành là trong Starcraft: Broodwar. Khi tôi nhấn các phím rất nhanh, tôi thường nhấn phím tiếp theo trước khi phát hành hoàn toàn phím trước đó dẫn đến một số lệnh bị bỏ qua. (Nhấp chuột 1A, Nhấp chuột 2A, Nhấp chuột 2A - 2 sẽ bị bỏ qua)

Điều này đã được thay đổi trong Warcraft III và kết quả là trò chơi đã phản ứng nhanh hơn với tôi và tôi chưa bao giờ gặp phải vấn đề 'nhóm kiểm soát dính' từ Broodwar.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.