Tiếp theo từ câu hỏi về tỷ lệ khung hình , tôi rất muốn nghe những gì người khác đang sử dụng khi làm việc trên các hệ thống UI 2D (rất có thể là các giải pháp tự trồng tại nhà của họ). Cụ thể, làm thế nào để bạn xử lý các hệ thống tọa độ. Theo tôi, có ba lựa chọn:
- Các tọa độ được mã hóa cứng (ví dụ: 0 -> 720, 0 -> 576)
- Tọa độ chuẩn hóa (0,0 -> 1,0, 0,0 -> 1,0), được ánh xạ vào tọa độ thực trước khi kết xuất
- Các tọa độ ảo (ví dụ: 0 -> 1600, 0 -> 1000), được ánh xạ vào tọa độ thực trước khi kết xuất
Mã hóa cứng rõ ràng chỉ hữu ích nếu bạn đang ở trên một nền tảng cố định và biết trước tọa độ không gian màn hình của bạn hoặc nếu bạn chuẩn bị bố trí màn hình cho mọi bộ kích thước màn hình có thể.
Các tọa độ chuẩn hóa là tốt, nhưng bị mơ hồ khi tỷ lệ khung hình của màn hình không cố định (ví dụ: 0,75 ánh xạ tới tọa độ vật lý khác khi chạy trên màn hình rộng so với tỷ lệ 4: 3). Ngoài ra, đối với các tác giả, việc khai báo một phần tử UI là (0,2 x 0,2) thực sự không trực quan, chỉ để thấy nó không thực sự vuông khi được hiển thị.
Các tọa độ ảo không rõ ràng, nhưng gặp phải các vấn đề tương tự như tọa độ chuẩn hóa ở giai đoạn ánh xạ lại: sự khác biệt thập phân nhỏ có thể dẫn đến các lỗi khác nhau có nghĩa là các thành phần UI hiện có một đường nối giữa chúng.
Tương tự, khi bạn có màn hình độ phân giải cố định, cả tọa độ chuẩn và ảo đều có nghĩa là rất khó để đảm bảo ánh xạ 1: 1 giữa các pixel được tạo thủ công tinh xảo của bạn trong hình ảnh UI và pixel trên màn hình, nghĩa là bạn có nguy cơ đồ tạo tỷ lệ khó chịu (giả sử bạn đang hiển thị dưới dạng hình tứ giác trên màn hình).
Chúng tôi đã thực hiện với phương pháp phối hợp ảo, đặc biệt để tránh sự mơ hồ về tỷ lệ khung hình. Vì vậy, khi hiển thị lên màn hình 16:10, không gian UI là (0,0) -> (1600,1000), nhưng khi kết xuất thành 4: 3, không gian UI có thể sử dụng thực sự là (133,0) -> (1467 , 0).
Có giải pháp nào tốt hơn mà tôi không biết? Có chiến lược tốt nào để giảm thiểu các vấn đề mà 3 phương pháp này có không?