En- boy oranı sorusundan sonra , 2D UI sistemleri (büyük olasılıkla kendi evde üretilen çözümler) üzerinde çalışırken diğer insanların ne kullandığını duymakla ilgileniyorum. Özellikle, koordinat sistemlerini nasıl ele alırsınız? Bana göre üç seçenek var:
- Sabit kodlu koordinatlar (örn: 0 -> 720, 0 -> 576)
- Normalize edilmiş koordinatlar (0.0 -> 1.0, 0.0 -> 1.0), oluşturulmadan önce gerçek koordinatlara eşlenir
- Oluşturmadan önce gerçek koordinatlara eşlenen sanal koordinatlar (örneğin: 0 -> 1600, 0 -> 1000)
Sabit kodlu, yalnızca sabit bir platformdaysanız ve ekran alanı koordinatlarınızın önceden ne olduğunu biliyorsanız veya olası her ekran boyutu kümesi için ekran düzenleri hazırlamaya hazırsanız kesinlikle yararlıdır.
Normalize edilmiş koordinatlar güzeldir, ancak ekranın en boy oranı sabit olmadığında belirsizliğe maruz kalır (örn. Geniş ekranda çalışırken 4: 3'te olduğundan farklı bir fiziksel koordinatla 0,75 eşlenir). Ayrıca, yazarlar için, bir UI öğesini (0.2 x 0.2) olarak ilan etmek gerçekten mantıksızdır, sadece işlendiğinde gerçekten kare olmadığını bulmak için.
Sanal koordinatlar açıktır, ancak yeniden eşleme aşamasında normalleştirilmiş koordinatlarla aynı sorunlardan muzdariptir: küçük bir ondalık tutarsızlık, tek tek hatalara neden olabilir;
Benzer şekilde, sabit çözünürlüklü bir ekranınız olduğunda, hem normalleştirilmiş hem de sanal koordinatlar, sanatçının sanatçının UI görüntüsündeki ince hazırlanmış pikselleri ve ekrandaki pikselleri arasında 1: 1 eşlemeyi garanti etmenin çok zor olduğu anlamına gelir. kötü ölçekleme eserleri (ekranda dokulu dörtlü olarak işlediğiniz varsayılarak).
Özellikle en-boy oranları konusundaki belirsizliği önlemek için sanal koordinat yaklaşımına geçtik. Dolayısıyla, bir 16:10 ekrana dönüştürürken UI alanı (0,0) -> (1600,1000), ancak 4: 3'e dönüştürürken kullanılabilir UI alanı aslında (133,0) -> (1467) , 0).
Farkında olmadığım daha iyi çözümler var mı? Bu 3 yaklaşımın sorunlarını en aza indirmek için iyi stratejiler var mı?