はじめに
Unity 2019.3 から Game View の新モードの Device Simulator が追加されました。
わざわざ実機にビルドしなくても、 Unity エディタ上で各端末のレイアウトの確認ができるらしいので、早速触ってみました。
調査環境
- Unity 2019.3.0b6
- Device Simulator を使うためには Unity 2019.3 以降のエディタを使う必要があります。
- Device Simulator preview – 1.2.0
準備
① Package Manager から Device Simulator をインストールする。
② Game ウィンドウ を Simulator に切り替える。
③ 以下のように Simulator モードになったら完了です。
機能
セーフエリアの表示
- 右上にある
Highlight Safe Area
を有効にすると、デバイスごとのセーフエリアを緑色の矩形で視覚化してくれます。
デバイスの変更
- いくつかのデバイスがデフォルトで対応しています。これらはパッケージのアップデートで今後増えていくようです。
デバイスの追加
/Library/PackageCache/com.unity.device-simulator@x.x.x-preview/.DeviceDefinitions
に(デバイス名).device.json
ファイルを追加することで、任意の端末を対応させることができます。- 以下は試しに Pixel 3a を追加した画面です。 Pixel 3 の
.device.json
ファイルを複製してデバイス名を変更しただけなので、中身は Pixel 3 と同じです。
- 設定項目が結構な量あるので、元々入っている
.device.json
ファイルを複製して必要な項目だけ変更していくと楽だと思います。- このファイルの15 行目辺りから書かれている
"Screens"
の中身さえ設定すれば UI のレイアウトチェックはできそうな気がします。
- このファイルの15 行目辺りから書かれている
画面の回転
Screen Settings
->Auto Rotation
を有効にすると、画面を回転させた時の挙動を確認することができます。
- 右上の
Rotate
で時計回り、反時計回りに回転できます。
Player Settings の上書き
- Simulator ウィンドウの
Player Settings
->Override Player Settings
を有効にすると、 Project Settings の Player Settings を上書きすることができます。- あくまで、 Simulator 上の設定が上書きされるだけなので、ビルドしたアプリには Project Settings 側の設定が適用されます。
- Simulator ウィンドウの Player Settings の変更は、上部の
Restart
ボタンで適用することができます。
- 上の画像の場合は、エディタ上でのみ
Auto Rotation
になります。 - UI のレイアウトの確認だけなら Project Settings の方を直接いじればいいんじゃないかな、という気がします。
- 公式ドキュメント的には、「 Android や iOS のサポートをインストールしていなくても設定を変更できるようにするため」の機能らしいです。
Play モード
- Simulator も Game ウィンドウなので、 Play モードで実行することができます。
- デバイスの切替や、画面の回転を行うこともできるので、動的に変化する UI の動作の確認もできます。
スクリプトから触ってみる
コールバック
- 用意されているコールバックは
DeviceSimulatorCallbacks.OnDeviceChange
のみのようです。- デバイスの変更を通知するコールバックです。
- Editor モード ( = 実行中以外 ) でも通知してくれます。
- デバイスの回転は通知してくれないので、微妙に使いづらそうです。
Input.deviceOrientation
も常にUnknown
が返ってくるので、回転を取得したい場合はScreen.currentResolution
の縦横を比較する等の一手間が必要なようです。
デバイス情報の取得
- 実機上でデバイス情報を取得する時と同じ実装で、 Simulator で選択中のデバイスの情報を取得することができます。
- 下の GIF では
DeviceSimulatorCallbacks.OnDeviceChange
のタイミングでSystemInfo.deviceModel
とScreen.safeArea
を Console に表示しています。
おわりに
まだ Preview 版なので使いづらい部分もありますが、エディタ上で UI のレイアウトの確認ができるので、とても便利な機能だと思います。