Unityで複数のスマホ解像度に対応する方法
Cameraの設定
Transform.Position, Transform.Rotationの設定でUI以外の見える範囲の調整が出来る。
これは実際のカメラの位置と回転が設定出来ます(出来ました)。
Scaleの設定とPositionのZ軸の設定は全く効果がないです。(なんでだろう?)
ProjectionがOrthographicの時のSizeはUI以外の見える範囲の大きさが変更出来ました。
これはTransform.Position.z を変更しているっぽい動きをします。
とりあえず1080x1920のスマホの一般的な画面を作り込んで、上記のカメラ設定をして、
ViewportRect の X, Y, W, H の設定で見える範囲を変更します。
このViewportRectの設定の変更で、はUIとUI以外、全ての見える範囲の変更が出来た。
これは1にスケール化(ノーマライズ)されていて、X, Yどちらかの方向の大きい方が1となり、他方は0~1の値となります。
このViewportRect設定は見える範囲なので(0, 0, 1, 1)より見える範囲を狭くすると実際の画面では画面の端っこに帯が見えてしまいます。
UI設定
CANVASの設定
RenderModeをScreen Space -Overlay → Screen Space - Camera に変更してRender Cameraをプロジェクトで設定しているカメラにすると、ワールドスペースとUIスペースが統合されます。
Plane Distanceの設定でUIキャンバスのレイヤーの位置が設定出来るので、3Dオブジェクトの前後にUIの表示を設定出来ます。
(通常のレイヤー優先度はOrder in Layerで設定)
アスペクト比を変更して画面をフィットさせる方法
このやり方が分からないのです...。
やるとすれば全てのゲームオブジェクトに対しての親ゲームオブジェクトを作って、そのゲームオブジェクトを実際のスクリーンのアスペクト比になるようにスケーリングするのがいいのかな、と。
役に立ちそうなリンク
Unityでモバイル向けに複数解像度対応 – GeekHacker(ギークハッカー)