Version: 2023.1
言語: 日本語
シミュレートされたクラス
デバイスシミュレーターの拡張

デバイスの追加

Device Simulator (デバイスシミュレーター)に新しいデバイスを追加するには、デバイス定義とデバイスオーバーレイを作成します。

デバイス定義は、Unity プロジェクトにある、.device 拡張子を持つテキストファイルです。このファイルには、デバイスのプロパティを記述した JSON が含まれています。

デバイスオーバーレイは、デバイス画面の境界線、ノッチ、パンチアウト、および画面の矩形領域へのその他の追加を含む画像です。任意でデバイス定義と一緒に使用すると、ハードウェア要素がデバイス画面をどのように妨げるかを視覚化し、その結果、タッチ入力がいつ失敗するかを判断することができます。

デバイス定義の作成

デバイス定義は、デバイスを表す JSON ファイルです。必須のプロパティといくつかの任意のプロパティの両方があります。デバイス定義ファイルにエラーがある場合、ファイルを選択すると Inspector にエラーが表示されます。

スキーマ

プロパティ 必須 説明 
friendlyName はい このデバイスの UI に表示する名前です。
version はい デバイス定義ファイルのバージョンを示す。現在、バージョンは 1 です。
screens はい デバイスをシミュレートするための画面 (screen) をそれぞれ記述したオブジェクトのリスト。これには少なくとも 1 つの screen が含まれていなければなりません。各スクリーンオブジェクトのスキーマについては、screen を参照してください。
systemInfo はい デバイスの能力を記述したオブジェクト。このオブジェクトの値は、SystemInfo にマップされます。systemInfo オブジェクトのスキーマについては、systemInfo を参照してください。

screen

プロパティ 必須 説明 
width はい 画面の幅 (ピクセル単位)。
height はい 画面の高さ (ピクセル単位)。
navigationBarHeight いいえ 全画面でないときに、一部のデバイスで表示される画面上の Android ナビゲーションバーの高さ (ピクセル単位)。
dpi はい 画面の dpi。
orientations いいえ 画面がシミュレートできる方向をそれぞれ記述したオブジェクトのリスト。このプロパティに値を設定しない場合、画面はすべての方向をサポートします。各 orientation オブジェクトのスキーマについては、orientation を参照してください。
presentation いいえ デバイスオーバーレイを記述するオブジェクト。このオブジェクトのスキーマについては、プレゼンテーション を参照してください。presentation

orientation

Properties 必須 説明 
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 を記述します。

プロパティ 必須 説明 
graphicsDeviceType はい Device.SystemInfo.graphicsDeviceType を参照。
graphicsMemorySize いいえ Device.SystemInfo.graphicsMemorySize を参照。
graphicsDeviceName いいえ Device.SystemInfo.graphicsDeviceName を参照。
graphicsDeviceVendor いいえ Device.SystemInfo.graphicsDeviceVendor を参照。
graphicsDeviceID いいえ Device.SystemInfo.graphicsDeviceID を参照。
graphicsDeviceVendorID いいえ Device.SystemInfo.graphicsDeviceVendorID を参照。
graphicsUVStartsAtTop いいえ Device.SystemInfo.graphicsUVStartsAtTop を参照。
graphicsDeviceVersion いいえ Device.SystemInfo.graphicsDeviceVersion を参照。
graphicsShaderLevel いいえ Device.SystemInfo.graphicsShaderLevel を参照。
graphicsMultiThreaded いいえ Device.SystemInfo.graphicsMultiThreaded を参照。
renderingThreadingMode いいえ Device.SystemInfo.renderingThreadingMode を参照。
hasHiddenSurfaceRemovalOnGPU いいえ Device.SystemInfo.hasHiddenSurfaceRemovalOnGPU を参照。
hasDynamicUniformArrayIndexingInFragmentShaders いいえ Device.SystemInfo.hasDynamicUniformArrayIndexingInFragmentShaders を参照。
supportsShadows いいえ Device.SystemInfo.supportsShadows を参照。
supportsRawShadowDepthSampling いいえ Device.SystemInfo.supportsRawShadowDepthSampling を参照。
supportsMotionVectors いいえ Device.SystemInfo.supportsMotionVectors を参照。
supports3DTextures いいえ Device.SystemInfo.supports3DTextures を参照。
supports2DArrayTextures いいえ Device.SystemInfo.supports2DArrayTextures を参照。
supports3DRenderTextures いいえ Device.SystemInfo.supports3DRenderTextures を参照。
supportsCubemapArrayTextures いいえ Device.SystemInfo.supportsCubemapArrayTextures を参照。
copyTextureSupport いいえ Device.SystemInfo.copyTextureSupport を参照。
supportsComputeShaders いいえ Device.SystemInfo.supportsComputeShaders を参照。
supportsGeometryShaders いいえ Device.SystemInfo.supportsGeometryShaders を参照。
supportsTessellationShaders いいえ Device.SystemInfo.supportsTessellationShaders を参照。
supportsInstancing いいえ Device.SystemInfo.supportsInstancing を参照。
supportsHardwareQuadTopology いいえ Device.SystemInfo.supportsHardwareQuadTopology を参照。
supports32bitsIndexBuffer いいえ Device.SystemInfo.supports32bitsIndexBuffer を参照。
supportsSparseTextures いいえ Device.SystemInfo.supportsSparseTextures を参照。
supportedRenderTargetCount いいえ Device.SystemInfo.supportedRenderTargetCount を参照。
supportsSeparatedRenderTargetsBlend いいえ Device.SystemInfo.supportsSeparatedRenderTargetsBlend を参照。
supportedRandomWriteTargetCount いいえ Device.SystemInfo.supportedRandomWriteTargetCount を参照。
supportsMultisampledTextures いいえ Device.SystemInfo.supportsMultisampledTextures を参照。
supportsMultisampleAutoResolve いいえ Device.SystemInfo.supportsMultisampleAutoResolve を参照。
supportsTextureWrapMirrorOnce いいえ Device.SystemInfo.supportsTextureWrapMirrorOnce を参照。
usesReversedZBuffer いいえ Device.SystemInfo.usesReversedZBuffer を参照。
npotSupport いいえ Device.SystemInfo.npotSupport を参照。
maxTextureSize いいえ Device.SystemInfo.maxTextureSize を参照。
maxCubemapSize いいえ Device.SystemInfo.maxCubemapSize を参照。
maxComputeBufferInputsVertex いいえ Device.SystemInfo.maxComputeBufferInputsVertex を参照。
maxComputeBufferInputsFragment いいえ Device.SystemInfo.maxComputeBufferInputsFragment を参照。
maxComputeBufferInputsGeometry いいえ Device.SystemInfo.maxComputeBufferInputsGeometry を参照。
maxComputeBufferInputsDomain いいえ Device.SystemInfo.maxComputeBufferInputsDomain を参照。
maxComputeBufferInputsHull いいえ Device.SystemInfo.maxComputeBufferInputsHull を参照。
maxComputeBufferInputsCompute いいえ Device.SystemInfo.maxComputeBufferInputsCompute を参照。
maxComputeWorkGroupSize いいえ Device.SystemInfo.maxComputeWorkGroupSize を参照。
maxComputeWorkgroupSizeX いいえ Device.SystemInfo.maxComputeWorkGroupSizeX を参照。
maxComputeWorkGroupSizeY いいえ Device.SystemInfo.maxComputeWorkGroupSizeY を参照。
maxComputeWorkgroupSizeZ いいえ Device.SystemInfo.maxComputeWorkGroupSizeZ を参照。
supportsAsyncCompute いいえ Device.SystemInfo.supportsAsyncCompute を参照。
supportsGraphicsFence いいえ Device.SystemInfo.supportsGraphicsFence を参照。
supportsAsyncGPUReadback いいえ Device.SystemInfo.supportsAsyncGPUReadback を参照。
supportsRayTracing いいえ Device.SystemInfo.supportsRayTracing を参照。
supportsRayTracingShaders いいえ See Device.SystemInfo.supportsRayTracingShaders.
supportsInlineRayTracing いいえ See Device.SystemInfo.supportsInlineRayTracing.
SupportSetConstantBuffer いいえ Device.SystemInfo.supportsSetConstantBuffer を参照。
hasMipMaxLevel いいえ Device.SystemInfo.hasMipMaxLevel を参照。
supportsMipStreaming いいえ Device.SystemInfo.supportsMipStreaming を参照。
usesLoadStoreActions いいえ Device.SystemInfo.usesLoadStoreActions を参照。

最低限のデバイス定義

以下のデバイス定義には、すべての必須プロパティが含まれ、任意のプロパティは含まれていません。これは、最低限のデバイス定義です。

ノート: このデバイスの定義は、orientation (向き) のデータを提供しません。そのため、シミュレーターはデバイスがすべての方向をサポートし、セーフエリアが画面全体を覆っていると仮定します。

{
    "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,
                "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 プロパティを加えてください。ここで、画像ファイルへのパス (overlayPath) と border のサイズ (borderSize) を設定します。この方法の例として、以下のデバイス定義ファイルを参照してください。 

{
    "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
シミュレートされたクラス
デバイスシミュレーターの拡張