見出し画像

【Unity】アスペクト比と解像度を常に一定にする方法

Unityでゲームを作成するときに悩ましいのが、様々なアスペクト比の機種に対応させることじゃないでしょうか。
特にAndroidは様々なメーカーから発売されており、アスペクト比が大量にあります。

1.unity入門の森 ゲームの作り方様

2.テッドラボ様

3.(:3[kanのメモ帳]

上記の通り、先人もアスペクト比についての解決策を紹介してくださっていますが、ゲーム画面のアスペクト比が正常になっても、UIがズレたりと、自分の環境ではうまくいかないことがありました(おそらく私のやり方が良くないだけだと思います)。

上記のサイトだけで、問題が解決するならば、それが一番いいと思いますが、自分の場合は1のunity入門の森 ゲームの作り方様と2のテッドラボ様のやり方をミックスすると上手くできました。

まずunity入門の森 ゲームの作り方様のAspectKeeperスクリプトを導入し、メインカメラにアタッチします。
ターゲットカメラにメインカメラを指定、AspectVecに固定したいアスペクトサイズを入力します。

これでカメラコンポーネントのサイズ(投影範囲、下の画像の場合は4.8)が固定されます。

次はCanvasの設定です。コンポーネントのCanvasScalerは使いませんので削除します。

Canvasの直下にPanelを作成し、imageコンポーネントは削除します。
RectTransformはセンタリングし、幅と高さを固定したいアスペクトサイズを入力し、テッドラボ様のRectScalerWithViewportスクリプトをアタッチします。

下の画像のようにCanvas>Panel>UIのアイテムという階層にします。

以下のとおり、解像度をFreeAspectにし、アスペクト比を変えても、ゲームの投影範囲とUIの表示位置は固定されています。


この記事が気に入ったらサポートをしてみませんか?