デバイスの追加
Explains how to define a new device to simulate and use it in the Device Simulator.
読み終わるまでの所要時間 20 分最終更新 1ヶ月前
Device Simulator (デバイスシミュレーター)に新しいデバイスを追加するには、デバイス定義とデバイスオーバーレイを作成します。
デバイス定義は、Unity プロジェクトにあり、 拡張子を持つテキストファイルです。このファイルには、デバイスのプロパティを記述した JSON が含まれています。
.deviceデバイスオーバーレイは、デバイス画面の境界線、ノッチ、パンチアウト、および画面の矩形領域へのその他の追加を含む画像です。任意でデバイス定義と一緒に使用すると、ハードウェア要素がデバイス画面をどのように妨げるかを視覚化し、その結果、タッチ入力がいつ失敗するかを判断することができます。
デバイス定義の作成
デバイス定義は、デバイスを表す JSON ファイルです。必須のプロパティといくつかの任意のプロパティの両方があります。デバイス定義ファイルにエラーがある場合、ファイルを選択すると Inspector にエラーが表示されます。
スキーマ
プロパティ | 必須 | 説明 |
|---|---|---|
| friendlyName | はい | このデバイスの UI に表示する名前です。 |
| version | はい | デバイス定義ファイルのバージョンを示します。現在のバージョンは |
| screens | はい | デバイスをシミュレートするための画面をそれぞれ記述したオブジェクトのリスト。これには少なくとも 1 つの screen が含まれていなければなりません。各スクリーンオブジェクトのスキーマについては、screen を参照してください。 |
| systemInfo | はい | デバイスの能力を記述したオブジェクト。このオブジェクトの値は、SystemInfo にマップします。systemInfo オブジェクトのスキーマについては、systemInfo を参照してください。 |
screen
プロパティ | 必須 | 説明 |
|---|---|---|
| width | はい | 画面の幅 (ピクセル単位)。 |
| height | はい | 画面の高さ (ピクセル単位)。 |
| navigationBarHeight | いいえ | 全画面でないときに、一部のデバイスで表示される画面上の Android ナビゲーションバーの高さ (ピクセル単位)。 |
| dpi | はい | 画面の dpi。 |
| orientations | いいえ | 画面がシミュレートできる向きをそれぞれ記述したオブジェクトのリスト。このプロパティに値を設定しない場合、画面はすべての向きをサポートします。各 orientation オブジェクトのスキーマについては、orientation を参照してください。 |
| presentation | いいえ | デバイスのオーバーレイを記述したオブジェクト。このオブジェクトのスキーマについては、presentation を参照してください。 |
orientation
プロパティ | 必須 | 説明 |
|---|---|---|
| orientation | はい | 画面の向き。このプロパティの値は、ScreenOrientation enum にマップする数値です。 |
| safeArea | いいえ | 画面のセーフエリアを決定する Rect。このプロパティに値を設定しないと、シミュレーターは画面全体がセーフであると見なします。 |
| cutouts | いいえ | コンテンツを表示できない画面のエリアを指定する Rect のリスト。 |
presentation
プロパティ | 必須 | 説明 |
|---|---|---|
| overlayPath | いいえ | デバイス定義ファイルから、デバイスのオーバーレイとして使用する画像への相対パス。 |
| borderSize | いいえ | オーバーレイから画面の開始位置までの距離 (ピクセル単位)。 |
systeminfo
このオブジェクトのプロパティでは、デバイスの機能とシステム情報を記述します。システム情報を記述するため、その多くは SystemInfo のプロパティにマップします。
プロパティ | 必須 | 説明 |
|---|---|---|
| deviceModel | いいえ | Device.SystemInfo.deviceModel を参照してください。 |
| deviceType | いいえ | Device.SystemInfo.deviceType を参照してください。 |
| operatingSystem | はい | Device.SystemInfo.operatingSystem を参照してください。 |
| operatingSystemFamily | いいえ | Device.SystemInfo.operatingSystemFamily を参照してください。 |
| processorCount | いいえ | Device.SystemInfo.processorCount を参照してください。 |
| processorFrequency | いいえ | Device.SystemInfo.processorFrequency を参照してください。 |
| processorType | いいえ | Device.SystemInfo.processorType を参照してください。 |
| supportsAccelerometer | いいえ | Device.SystemInfo.supportsAccelerometer を参照してください。 |
| supportsAudio | いいえ | Device.SystemInfo.supportsAudio を参照してください。 |
| supportsGyroscope | いいえ | Device.SystemInfo.supportsGyroscope を参照してください。 |
| supportsLocationService | いいえ | Device.SystemInfo.supportsLocationService を参照してください。 |
| supportsVibration | いいえ | Device.SystemInfo.supportsVibration を参照してください。 |
| systemMemorySize | いいえ | Device.SystemInfo.systemMemorySize を参照してください。 |
| unsupportedIdentifier | いいえ | Device.SystemInfo.unsupportedIdentifier を参照してください。 |
| graphicsDependentData | いいえ | デバイスがサポートするグラフィックス API をそれぞれに記述したオブジェクトのリスト。各オブジェクトのスキーマについては、graphicsDependentData を参照してください。 |
graphicsDependentData
オブジェクトのプロパティは、デバイスがサポートするグラフィックス API を記述します。
最低限のデバイス定義
以下のデバイス定義には、すべての必須プロパティが含まれ、任意のプロパティは含まれていません。これは、最低限のデバイス定義です。
ノート: このデバイス定義は向きのデータを提供しないため、シミュレーターはデバイスがすべての向きをサポートし、セーフエリアが画面全体を覆っていると仮定します。
{ "friendlyName": "Minimal Device", "version": 1, "screens": [ { "width": 1080, "height": 1920, "dpi": 450.0 } ], "systemInfo": { "operatingSystem": "Android" }}
完全なデバイス定義
以下のデバイス定義には、すべての必須および任意のプロパティが含まれています。
{ "friendlyName": "Apple iPhone XR", "version": 1, "screens": [ { "width": 828, "height": 1792, "navigationBarHeight": 0, "dpi": 326.0, "orientations": [ { "orientation": 1, "safeArea": { "serializedVersion": "2", "x": 0.0, "y": 68.0, "width": 828.0, "height": 1636.0 }, "cutouts": [ { "serializedVersion": "2", "x": 184.0, "y": 1726.0, "width": 460.0, "height": 66.0 } ] }, { "orientation": 3, "safeArea": { "serializedVersion": "2", "x": 88.0, "y": 42.0, "width": 1616.0, "height": 786.0 }, "cutouts": [ { "serializedVersion": "2", "x": 0.0, "y": 184.0, "width": 66.0, "height": 460.0 } ] }, { "orientation": 4, "safeArea": { "serializedVersion": "2", "x": 88.0, "y": 42.0, "width": 1616.0, "height": 786.0 }, "cutouts": [ { "serializedVersion": "2", "x": 1726.0, "y": 184.0, "width": 66.0, "height": 460.0 } ] } ], "presentation": { "overlayPath": "Apple iPhone 11_Overlay.png", "borderSize": { "x": 51.0, "y": 51.0, "z": 51.0, "w": 51.0 } } } ], "systemInfo": { "deviceModel": "iPhone11,8", "deviceType": 1, "operatingSystem": "iOS 12.0", "operatingSystemFamily": 0, "processorCount": 6, "processorFrequency": 0, "processorType": "arm64e", "supportsAccelerometer": true, "supportsAudio": true, "supportsGyroscope": true, "supportsLocationService": true, "supportsVibration": true, "systemMemorySize": 2813, "unsupportedIdentifier": "n/a", "graphicsDependentData": [ { "graphicsDeviceType": 16, "graphicsMemorySize": 1024, "graphicsDeviceName": "Apple A12 GPU", "graphicsDeviceVendor": "Apple", "graphicsDeviceID": 0, "graphicsDeviceVendorID": 0, "graphicsUVStartsAtTop": true, "graphicsDeviceVersion": "Metal", "graphicsShaderLevel": 50, "graphicsMultiThreaded": true, "renderingThreadingMode": 0, "hasHiddenSurfaceRemovalOnGPU": true, "hasDynamicUniformArrayIndexingInFragmentShaders": true, "supportsShadows": true, "supportsRawShadowDepthSampling": true, "supportsMotionVectors": true, "supports3DTextures": true, "supports2DArrayTextures": true, "supports3DRenderTextures": true, "supportsCubemapArrayTextures": true, "copyTextureSupport": 31, "supportsComputeShaders": true, "supportsGeometryShaders": false, "supportsTessellationShaders": true, "supportsInstancing": true, "supportsHardwareQuadTopology": false, "supports32bitsIndexBuffer": true, "supportsSparseTextures": false, "supportedRenderTargetCount": 8, "supportsSeparatedRenderTargetsBlend": true, "supportedRandomWriteTargetCount": 8, "supportsMultisampledTextures": 1, "supportsMultisampleAutoResolve": false, "supportsTextureWrapMirrorOnce": 0, "usesReversedZBuffer": true, "npotSupport": 2, "maxTextureSize": 16384, "maxCubemapSize": 16384, "maxComputeBufferInputsVertex": 8, "maxComputeBufferInputsFragment": 8, "maxComputeBufferInputsGeometry": 0, "maxComputeBufferInputsDomain": 8, "maxComputeBufferInputsHull": 8, "maxComputeBufferInputsCompute": 8, "maxComputeWorkGroupSize": 1024, "maxComputeWorkGroupSizeX": 1024, "maxComputeWorkGroupSizeY": 1024, "maxComputeWorkGroupSizeZ": 1024, "supportsAsyncCompute": false, "supportsGraphicsFence": true, "supportsAsyncGPUReadback": true, "supportsParallelPSOCreation": true, "supportsRayTracing": false, "supportsRayTracingShaders": false, "supportsInlineRayTracing": false, "supportsSetConstantBuffer": true, "hasMipMaxLevel": true, "supportsMipStreaming": true, "usesLoadStoreActions": true, "supportedTextureFormats": [1, 2, 3, 4, 5], "supportedRenderTextureFormats": [1, 2, 3, 4, 5], "ldrGraphicsFormat": 59, "hdrGraphicsFormat": 74 } ] }}
デバイスオーバーレイの作成
デバイスオーバーレイは、デバイス画面の境界線と、ノッチ、パンチアウト、および画面の矩形領域へのその他の追加機能を含む画像です。任意でデバイス定義と一緒に使用すると、ハードウェア要素がデバイス画面をどのように妨げるかを視覚化し、その結果、タッチ入力がいつ失敗するかを判断することができます。
デバイスシミュレーターは、透明なピクセルはタップできる画面領域、それ以外の色の不透明なピクセルはハードウェアが妨げる領域と解釈します。テクスチャ自体はどんな形でも構いません。
以下の例では、2 つの iPhone モデルのデバイスオーバーレイを示しています。
ノート: デバイスオーバーレイを使用するときの見え方を模倣するため、これらの例では画面のタブを作成する領域に Unity のデフォルトのスカイボックスを表示しています。実際のデバイスオーバーレイでは、これらのピクセルは透明です。
Apple iPhone 8 オーバーレイ | Apple iPhone XS オーバーレイ |
|---|---|
![]() | ![]() |
デバイスオーバーレイの使用
デバイスオーバーレイテクスチャを作成した後に、それをデバイス定義と一緒に使用するには、まずデバイスオーバーレイテクスチャファイルをプロジェクトにインポートする必要があります。
ノート: デバイスシミュレーターがデバイスオーバーレイテクスチャをロードするとき、Read/Write を有効にしようとします。これができない場合、デバイスシミュレーターはテクスチャを表示しますが、テクスチャを入力のマスクに使用することはできません。つまり、デバイスオーバーレイによってマスクされているべき画面のノッチやその他の領域をクリックすると、入力が検出されます。このようなことが起こらないようにするには、デバイスオーバーレイテクスチャをインポートするときに、Texture Import Settings ウィンドウで Read/Write を有効にします。
デバイスオーバーレイテクスチャがプロジェクトにある場合、デバイス定義ファイルを開き、デバイスがサポートする画面を定義するオブジェクトに presentation プロパティを加えてください。ここで、画像ファイルへのパス () と、境界線のサイズ () を設定します。この方法の例として、以下のデバイス定義ファイルを参照してください。
overlayPathborderSize{ "friendlyName": "Minimal Device with Overlay", "version": 1, "screens": [ { "width": 1080, "height": 1920, "dpi": 450.0, "presentation": { "overlayPath": "Overlays/MinimalDeviceOverlay.png", "borderSize": { "x": 51.0, "y": 51.0, "z": 51.0, "w": 130.0 } } } ], "systemInfo": { "operatingSystem": "Android" }}
ノート: デバイスオーバーレイテクスチャファイルのパスは、デバイス定義ファイルへの相対パス、または Unity プロジェクト内の Assets または Packages ディレクトリを含むディレクトリへの相対パスです。例えば、デバイス定義ファイルが Assets/Devices ディレクトリにあり、デバイスオーバーレイファイルが Assets/Devices/Overlays ディレクトリにある場合、以下のファイルパスは両方とも有効です。
- デバイス定義ファイルへの相対パス Overlays/MinimalDeviceOverlay.png
- Assets ディレクトリを含むディレクトリへの相対パス: Assets/Devices/Overlays/MinimalDeviceOverlay.png

