【Unity】Unityエディタ上でスマホ実機がシミュレーションできるDevice Simulatorの使い方まとめ

Unityエディタ上でスマホ実機がシミュレーションできるDevice Simulatorの使い方をまとめました。

Unity2020.2.7f1
Device Simulator 2.2.4-preview

Device Simulator?

Device Simulatorを使うとゲームが実際に実機上でどのように見えるかをシミュレートできます。

f:id:halya_11:20210410133109p:plain
Device Simulator

インストール

Device SimulatorはUnity2021以降ではUnityに組み込まれるようですが、
インストールされていなかったらPackage Managerからインストールしてください。

Package Managerについては以下の記事にまとめていますので必要に応じて参照してください。

light11.hatenadiary.com

基本操作

インストールが完了するとGameビューの左上からSimulateモードに切り替えられるようになります。

f:id:halya_11:20210409181618p:plain
切替え

切り替えたら以下の画面が表示されるので、デバイスを選択したりしてセットアップします。

f:id:halya_11:20210410132545p:plain
操作説明

緑色の線はセーフエリアを示しています。
ちなみにこの線の色や太さはPreferences > Device Simulatorから変更可能です。

カスタムアセンブリに設定を反映する

さてこのDevice Simulatorを使うと、ScreenクラスやSystemInfoクラス、Applicationクラスから得られる値の一部が上書きされます。

ここでPackage Managerで外部のモジュールを入れることを考えてみます。
もしかしたらそのモジュールではこれらの値が上書きされていたら困る実装になっているかもしれません。
例えばApplication.isEditorがtrueだったらエディタ用の処理をするコードが記述されていた場合、
Device Simulatorを使うとApplication.isEditorがfalseになり、意図しない処理が走ってしまいます。

そこでDevice Simulatorでは、SystemInfoクラスとApplicationクラスに関しては、
カスタムアセンブリからアクセスした場合には元々の値を返す仕様になっています(Screenは反映されます)。
外部モジュールだけでなく、自身でAssembly Definition Fileを定義した場合も同様です。

もしカスタムアセンブリにDevice Simulatorによる値を反映したい場合には、 Project Settings > Device Simulator > Custom Assembiesアセンブリ名を登録します。

f:id:halya_11:20210410140919p:plain
Custom Assembly

カスタムデバイスを追加する

Device Simulatorはデフォルトでかなりの種類のデバイスをカバーしていますが、
独自の設定のデバイスを追加することもできます。

カスタムデバイスを追加するには以下のようなデバイス情報を書いたjsonを用意します。

{
    "friendlyName": "Custom Device",
    "version": 1,
    "Screens": [
        {
            "width": 1080,
            "height": 1920,
            "dpi": 450.0
        }
    ],
    "SystemInfo": {
        "operatingSystem": "Android"
    }
}

これを、任意のファイル名と.device.jsonという拡張子で任意のフォルダに保存しておきます。
そしてこのフォルダパスをPreferences > Device Simulator > Device Directoryに入力します。

あとは一度Gameビューに切り替えてからDevice Simulatorに再度切り替えればこのデバイスが選択できるようになります。

f:id:halya_11:20210410133813p:plain
カスタムデバイス

ちなみに上記の例は最低限の設定項目だけを設定したものです。
全設定項目はマニュアルを参照してください。

docs.unity3d.com

参考

docs.unity3d.com