「Unity – Joystickを使ってみる –」でJoystickは動かせたけど表示位置が予定の場所からズレてしまった。
いろいろいじっていて、下のようにしたら意図した通りの位置に表示されるようになった。
編集時のUnityのGame Windowでは下のように見えている。
以前はそれが崩れてしまっていたが、上のようにしたら直った。
下は、Nexus7で実行中のスクリーン・ショットだ。
適当に変更しているので、いったいどこをどう変えた結果そうなったのかが分からない。
Unityのマニュアルによれば、とりあえずここで作っているカメラ移動のないゲームではRender Modeの違いは関係なさそうだ。
関係ありそうなのはCanvas Scalerで、Unityのマニュアルによれば、
UI Scale Mode : Canvas内のUI要素をどのようにスケーリングするかを決めます。
Constant Pixel Size : UI要素を画面サイズによらずピクセル単位で同様のサイズに保ちます。
Scale With Screen Size : 画面サイズが大きいほどに、UI要素を大きくします。
Constant Physical Size : UI要素を画面サイズや解像度によらず、物理的に同様のサイズに保ちます。
とあるうちの、Scale With Screen Sizeが良さそうだ。
他は画面サイズに合わせてくれないのでJoystickの含まれるUIの表示はうまくなさそう。
Scale With Screen Sizeを選んだ場合の設定は以下のもので、
Reference Resolution : UIレイアウトが設計されている解像度。もし画面解像度が大きければ、UIはスケールアップし、小さければ、UIはスケールダウンします。
Screen Match Mode : 現在の解像度のアスペクト比が基準解像度にフィットしない場合は、モードはCanvas空間をスケールするのに使用されます
Match Width or Height : 基準値となる幅、基準値となる高さや、何かの間となるCanvasの空間をスケールします
Expand Canvas : 空間を水平や垂直に展開するので、Canvasのサイズは基準値よりも小さくなることはありません
Shrink Canvas : 空間を水平や垂直にトリミングするので、Canvasのサイズは基準値よりも大きくなることはありません。
合わせるか、広げるか、縮めるかの選択だ。
Match Width or Heightを選んだ場合は以下の設定項目となり、
Match : スケーリングがwidthかheight、それらを混ぜ合わせたものを参照として使用するかを決定します。
Reference Pixels Per Unit : スプライトがPixels Per Unit 設定を持つ場合、スプライトの1ピクセルはUIの1ユニットをカバーします。
なかなか面倒。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
UI Scale Mode Constant Pixel Size : 画面サイズによらずピクセル単位でサイズを保つ Scale With Screen Size : 画面サイズに合わせる Constant Physical Size : 物理的にサイズを保つ Scale With Screen Sizeの場合(他は省略) Reference Resolution : 設計解像度。これに応じてUIはスケールアップかスケールダウンする Screen Match Mode : アスペクト比が合わない場合の合わせ方 Match Width or Height : 幅か高さに合わせる Match : 幅か高さ、どらに合わせるかの程度 Expand Canvas : 合うように広げる Shrink Canvas : 合うようにトリミングする Reference Pixels Per Unit : |
Tweet