【Unity】uGUIで解像度を指定する

Unityで開発する場合、インストール後そのままだと画面解像度が固定されていません。
解像度が異なる端末で動作するアプリを開発する場合、そのままだと困ったことになってしまうため、解像度を指定して余剰な箇所は黒塗りにするのがベターです。

今回の方法でレイアウトを行う場合の注意点

SpriteRendererコンポーネントを利用して画像を表示する場合
CameraがCanvas配下に含まれない
 → Canvas配下にGameObjectを配置しても描画されません。
CameraがCanvas配下に含まれる
 → 画像は描画されますが、カメラの撮影位置が崩れてしまいます。

Image(Script)コンポーネントを利用して画像を表示する場合
描画されます。
画像は極力固定する解像度に合わせて作成し、Image(Script)コンポーネントのSetNativeSizeからリサイズすると配置が楽になるかもしれません。

環境

  • OSX Yosemite v10.10.5
  • Unity v5.2

流れ

  1. UIベースを作成
  2. Canvas設定の変更
  3. Panel設定の変更
  4. PanelにMaskを追加
  5. Gameウィンドウのアスペクト比を指定
UIベースを作成

GameObject > UI > Panel を選択し、UIのベースを作成します。

Canvas設定の変更

作成したPanelの親であるCanvasを選択し、CanvasScalerコンポーネントの設定を変更します。

UiScaleMode
ScaleWithScreenSizeに変更します。

ScreenMatchMode
Expandに変更します。

Panel設定の変更

Anchor
中央に設定します。

PanelにMaskを追加

PanelのコンポーネントにMaskを追加します。

Gameウィンドウのアスペクト比を指定

WidthとHeight
初期状態でFreeAspectとなっている箇所を、プルダウンメニューから+を選択して
固定したい解像度を作成、または変更します。
CanvasのReferenceResolutionも同じ値に設定します。