アスペクト比の質問に続いて、2D UIシステムで作業しているときに他の人が使用しているものを聞くことに興味があります(ほとんどの場合、独自のソリューションです)。具体的には、座標系をどのように処理しますか。私の考えでは、3つのオプションがあります。
- ハードコードされた座標(例:0-> 720、0-> 576)
- 正規化された座標(0.0-> 1.0、0.0-> 1.0)、レンダリング前に実際の座標にマッピング
- 仮想座標(例:0-> 1600、0-> 1000)、レンダリング前に実際の座標にマッピング
ハードコードは、固定プラットフォームを使用していて、画面スペースの座標が事前にわかっている場合、またはすべての可能な画面サイズのセットの画面レイアウトを作成する準備ができている場合にのみ有用です。
正規化された座標はいいですが、画面の縦横比が固定されていない場合はあいまいになります(たとえば、ワイドスクリーンで実行した場合、4:3よりも異なる物理座標に0.75がマップされます)。また、作成者にとって、UI要素を(0.2 x 0.2)として宣言するのは本当に直観に反し、レンダリング時に実際に正方形ではないことがわかります。
仮想座標は曖昧ではありませんが、再マッピング段階での正規化座標と同じ問題に悩まされます:小さな10進数の不一致により、1つずれたエラーが発生する可能性があります。
同様に、固定解像度の画面がある場合、正規化された座標と仮想座標の両方は、UIイメージ内のアーティストの細かく作成されたピクセルと画面上のピクセル間の1:1マッピングを保証するのが非常に難しいことを意味します。厄介なスケーリングアーティファクト(画面上のテクスチャ付きクワッドとしてレンダリングしていると仮定)。
特に縦横比の曖昧さを避けるために、仮想座標アプローチを採用しました。16:10画面にレンダリングする場合、UIスペースは(0,0)->(1600,1000)ですが、4:3にレンダリングする場合、使用可能なUIスペースは実際には(133,0)->(1467 、0)。
私が気づいていないより良い解決策はありますか?これら3つのアプローチが抱える問題を最小限に抑えるための良い戦略はありますか?