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

デバイスの追加

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

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

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

デバイス定義の作成

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

スキーマ

プロパティ 必須 説明
friendlyName はい このデバイスの UI に表示する名前です。
version はい デバイス定義ファイルのバージョンを示します。現在のバージョンは 1 です。
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 を記述します。

プロパティ 必須 説明
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 を参照してください。
supportsParallelPSOCreation いいえ Device.SystemInfo.supportsParallelPSOCreation を参照してください。
supportsRayTracing いいえ Device.SystemInfo.supportsRayTracing を参照してください。
supportsRayTracingShaders いいえ Device.SystemInfo.supportsRayTracingShaders を参照してください。
supportsInlineRayTracing いいえ Device.SystemInfo.supportsInlineRayTracing を参照してください。
SupportSetConstantBuffer いいえ Device.SystemInfo.supportsSetConstantBuffer を参照してください。
hasMipMaxLevel いいえ Device.SystemInfo.hasMipMaxLevel を参照してください。
supportsMipStreaming いいえ Device.SystemInfo.supportsMipStreaming を参照してください。
usesLoadStoreActions いいえ Device.SystemInfo.usesLoadStoreActions を参照してください。

最低限のデバイス定義

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

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

{
    "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 プロパティを加えてください。ここで、画像ファイルへのパス (overlayPath) と、境界線のサイズ (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
シミュレートされたクラス
デバイスシミュレーターの拡張