Search Unity

新機能「Device Simulator」でモバイル開発のイテレーションを加速させよう

, 9月 27, 2019

モバイルデバイス向けにコンテンツを制作する場合、特性の異なる様々なデバイスで機能するようにするためにはプロジェクトのテストと調整を行う必要があります。ターゲットにするハードウェアをすべて入手できたとしても、各デバイス上でのコンテンツの見え方を把握するのは時間の掛かる作業です。

Unity の新機能「Device Simulator」は、この状況に対応するために開発されました。本機能を使用すると、各種デバイスの挙動と物理特性のプレビューが可能になります。これにより、エディターで実行されたコードとデバイス上の実行結果の一致度を従来より遥かに高めることができます。ゲームビューで、特定の解像度やノッチ(切り抜き)レイアウトでのプレビューが行えるほか、(RAM やチップセットなどの)デバイス情報に基づく部分的な品質設定など、デバイス別のカスタマイゼーションのプレビューが可能になります。

Device Simulator の概要

Device Simulator には以下の機能が含まれます。

  • 拡張されたゲームビュー ― シミュレーションモードのオン・オフの切り替えや、デバイスの選択が可能です。
  • 拡張可能なデバイスデータベース ― API Shim の戻り値を決める、デバイスや電話端末の設定や特性の情報が格納されています。
  • API Shim ― エディターの再生モードで使用した時に、デバイス専用 API の結果(画面解像度、デバイスモデル、角度など)を戻します。
  • Device Simulator を実際に動かしているデモ動画もご覧ください。

シミュレート可能なデバイスのリスト

Device Simulator は、パッケージ内(com.unity.device-simulator/com.unity.device-simulator フォルダー内)に最初から定義済みの電話端末のリストが含まれています。デバイスの定義は JSON ファイルに保存されており、このリストはパッケージの更新時に定期的に拡張される予定です。また、(簡単に共有したりソース管理システム内でチェックインできるようにするために)カスタムのデバイス定義をプロジェクトに追加するメカニズムも提供される予定です。

シミュレーションのシナリオ

Device Simulator が扱う主要な 2 つのクラスは UnityEngine.ScreenUnityEngine.SystemInfo で、戻り値はデバイス定義の JSON ファイルからフィードされます。

この機能によって、エディター内でデバイスごとの挙動のテストが可能になります。例えば、各種電話端末のノッチに対応するためにキャンバスのサイズを計算し、UI を動的に調整することができます。

Device Simulator にセーフエリアの位置と挙動が表示され、これを使用して Canvas の位置を制御することができます。

また Devices Simulator は拡張可能なため、独自のシナリオを構築することができます。拡張ポイントを使用して Simulator にAdaptive Performance を追加できます。この機能を使用すると、スロットリングイベントを強制(シミュレート)してからコードを検証し、正しくトリガーされるようにパフォーマンスをその場で調整することができます。拡張の仕組みに関しては、近い将来に本ブログでご説明させていただきます。

Adaptive Performance のスロットリングイベントをシミュレートしてパフォーマンス調整のロジック(ここでは、生成されるオブジェクト数を削減するためのロジック)をテストする

プレビュー版の Device Simulator は Unity 2019.3(ベータ版)のパッケージマネージャーからご入手いただけます。ご意見やお問合せはフォーラムからお気軽にお寄せください。皆様のフィードバックをお待ちしております!

27 コメント

コメントの配信登録

返信する

これらの HTML タグや属性を使用できます: <a href=""> <b> <code> <pre>

  1. This is great! thanks. Tried it out, but possibly found a bug, Screen.width and Screen.height report the simulated editor canvas size, instead of the device’s resolution. Normally those values are the actual device resolution.

    1. Tried scaling view up to 100% to get around this, but the side bars don;t allow you to scroll to see the whole screen. can’t get camera view higher than about half way up the screen.
      Looking forward to finished version… with will be a great help when finished.

  2. In my opinion something like this is absolutely essential for proper app development.

  3. Devang Agrawal

    9月 28, 2019 6:11 am 返信

    thanks, device simulator really helpful

  4. impressive if it works

  5. Fabiano Alves de Sousa

    9月 28, 2019 12:24 am 返信

    i love u unity! <3

  6. thanks great device simulator really helpful

  7. Wild Mage Games

    9月 27, 2019 6:19 pm 返信

    I made a similar asset for previewing phones and tablets, that works for all Unity version from 5.0 to 2019.2.

    It is called “Multi Device Preview & Gallery”.

    You can preview more than 200 device presets and more than 50 full phone and tablet preview, including phones with notches. It also include popularity presets to target the popular phones of your target platforms. You can preview multiple devices at once in the gallery.

    You can find the list of more 200 phone and tablet presets in the asset store page: https://assetstore.unity.com/packages/tools/utilities/multi-device-preview-gallery-82015

    1. Hi, you have a really cool asset/tool package.
      We will publish soon more details on own to extend the device simulator, it might be a good opportunity to have your features even more integrated to Unity Editor.
      JC

      1. Wild Mage Games

        9月 29, 2019 8:51 pm 返信

        Hello,
        Thanks for your message.
        This sounds very interesting, keep me updated!

  8. Would be really useful if you also had a couple of tablet devices.

    1. Currently we have shipped with two different Ipad Pro’s loaded but we will be adding more over the coming weeks to build a more rounded database.

  9. After 10 and more years of mobile developing, about time!

  10. Brilliant! It is not possible to have all the available devices, but this means we can get away with fewer than before. I still think the biggest, smallest, and least performant are needed. But at least we don’t need every aspect ratio and notch type now, which is getting to be a problem with the variety available.

  11. Bravo. I applaud while standing!

  12. Finally , This is awesome .

  13. Good work

  14. Love this!
    Seems to be API & CPU focused though… does this or will this address differences in graphics hardware, shader compatibility etc as well?

    1. Arnold Wittenberg

      9月 27, 2019 10:19 am 返信

      Yea! That i was asking as well but you put it in better words. ;-)

    2. Great question. Currently we are only simulating SystemInfo and Screen, however we are investigating expanding this to also be able to override Graphics Capabilities & Shader keywords which would go another step to more closely replicate the visuals presented on a specific mobile device (TBD at this time). It’s important to note this wouldn’t be a full emulator nor are we able to emulate device specific performance.

  15. Niraj Vishwakarma

    9月 27, 2019 10:11 am 返信

    Finally the time saviour is here… Great addition to 2019.3

  16. Mustafa Güray Şenova

    9月 27, 2019 10:03 am 返信

    Good news!

  17. This really needs to be back-ported to 2018.4 LTS.

  18. Absolutely brilliant!!!!

  19. Arnold Wittenberg

    9月 27, 2019 9:47 am 返信

    Great news!

    I was wondering will this system also simulate device performance ?
    For example I found out that a 2d test scene was rendering at 60fps on Samsung S6 but only 7 to 9 fps on a Samsung J5.
    Will this simulation be able to emulate this in a way that it would be possible to fine tune a scene for a given device taking into account a device hardware limitations ?

    1. Unfortunately estimating performance on specific devices is not feasible. However this should certainly help you test different ‘quality tier’s’ that you can define and toggle to at runtime based on device models or chipsets.

  20. This is awesome :)