Kelas simulasi
Memperpanjang simulator perangkat

Menambahkan perangkat

Untuk menambahkan perangkat baru ke Simulator Perangkat, Anda membuat definisi perangkat dan overlay perangkat.

Definisi perangkat adalah file teks dengan ekstensi .device dalam proyek Unity Anda. Ini mengandung JSON yang menggambarkan sifat perangkat.

Overlay perangkat adalah gambar yang mengandung perbatasan layar perangkat, bersama-sama dengan notches, punchout, dan penambahan lain untuk persegi panjang layar. Anda dapat secara opsional menggunakannya dengan definisi perangkat untuk memvisualisasikan bagaimana elemen perangkat menghalangi layar perangkat, dan untuk menentukan ketika sentuh input gagal sebagai hasilnya.

Membuat definisi perangkat

Definisi perangkat adalah file JSON yang mewakili perangkat. Ini memiliki sifat yang diperlukan dan beberapa sifat opsional. Jika file definisi perangkat berisi kesalahan, kesalahan muncul di InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary
ketika Anda memilih file.

Schema

Property Required Description
friendlyName Yes Nama untuk ditampilkan dalam UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary
untuk perangkat ini.
version Yes Menunjukkan versi file definisi perangkat. 1.
screens Yes Daftar objek yang masing-masing menggambarkan layar untuk mensimulasikan perangkat untuk. Ini harus berisi setidaknya satu layar. Untuk informasi tentang skema setiap objek layar, lihat screen.
systemInfo Yes Sebuah objek yang menggambarkan kemampuan perangkat. Nilai dalam peta objek ini menjadi SystemInfo. Untuk informasi tentang skema objek sistemInfo, lihat sistem Sitemap.

screen

Property Required Description
width Yes Lebar, dalam pixelsUnit terkecil dalam gambar komputer. Ukuran piksel tergantung pada resolusi layar Anda. Pencahayaan pixel dihitung pada setiap piksel layar. More info
Lihat di Glossary
, dari layar.
height Yes Tinggi, dalam piksel, dari layar.
navigationBarHeight No Tinggi, dalam pixel, dari bar navigasi Android layar on-screen yang muncul di beberapa perangkat ketika tidak di layar penuh.
dpi Yes Dpi layar.
orientations No Daftar objek yang masing-masing menggambarkan orientasi layar dapat mensimulasikan. Jika Anda tidak menetapkan nilai untuk properti ini, layar mendukung semua orientasi. Untuk informasi tentang skema setiap objek orientasi, lihat orientation.
presentation No Sebuah objek yang menggambarkan overlay perangkat. Untuk informasi tentang skema objek ini, lihat presentation.

orientation

Properties Required Description
orientation Yes Orientasi layar. Nilai properti ini adalah jumlah yang peta ke ScreenOrientation enum.
safeArea No Sebuah Rect yang menentukan area yang aman dari layar. Jika Anda tidak menetapkan nilai untuk properti ini, simulator menganggap seluruh layar aman.
cutouts No Daftar Rect yang menentukan area layar yang tidak berfungsi untuk menampilkan konten.

presentation

Property Required Description
overlayPath No Jalur relatif dari file definisi perangkat ke gambar untuk digunakan sebagai overlay perangkat.
borderSize No Jarak, dalam piksel, dari overlay ke mana layar dimulai.

systeminfo

Sifat dalam objek ini menggambarkan kemampuan dan informasi sistem perangkat. Karena mereka menggambarkan informasi sistem, banyak dari mereka peta properti di SystemInfo.

Property Required Description
deviceModel No See Perangkat.SystemInfo.deviceModel.
deviceType No See Perangkat.SystemInfo.deviceType.
operatingSystem Yes See Perangkat.SystemInfo.operatingSystem.
operatingSystemFamily No See Perangkat.SistemInfo.operatingSystemFamily.
processorCount No See SiteInfo.processorCount.
processorFrequency No See Perangkat.Info.processorFrequency.
processorType No See Perangkat.SistemInfo.processorType.
supportsAccelerometer No See Perangkat.Info.supportsAccelerometer.
supportsAudio No See Perangkat.SystemInfo.supportsAudio.
supportsGyroscope No See Perangkat.Info.supportsGyroscope.
supportsLocationService No See Perangkat.SistemInfo.supportsLocationService.
supportsVibration No See Perangkat.SistemInfo.supportsVibration.
systemMemorySize No See SiteInfo.systemMemorySize.
unsupportedIdentifier No See Device.SystemInfo.unsupportedIdentifier.
graphicsDependentData No Daftar objek yang masing-masing menjelaskan API grafis yang mendukung perangkat. Untuk informasi tentang skema setiap objek, lihat Login Login Login.

Login Login Login

Sifat dalam objek menggambarkan API grafis yang mendukung perangkat.

Property Required Description
graphicsDeviceType Yes See Perangkat.Info.graphicsDeviceType.
graphicsMemorySize No See Perangkat.Info.graphicsMemorySize.
graphicsDeviceName No See Perangkat.Info.graphicsDeviceName.
graphicsDeviceVendor No See Perangkat.Info.graphicsDeviceVendor.
graphicsDeviceID No See Perangkat.Info.graphicsDeviceID.
graphicsDeviceVendorID No See Perangkat.Info.graphicsDeviceVendorID.
graphicsUVStartsAtTop No See Perangkat.Info.graphicsUVStartsAtTop.
graphicsDeviceVersion No See Perangkat.Info.graphicsDeviceVersion.
graphicsShaderLevel No See Perangkat.Info.graphicsShaderLevel.
graphicsMultiThreaded No See Perangkat.Info.grafisMultiThreaded.
renderingThreadingMode No See Perangkat.SystemInfo.renderingThreadingMode.
hasHiddenSurfaceRemovalOnGPU No See Perangkat.Info.hasHiddenSurfaceRemovalOnGPU.
hasDynamicUniformArrayIndexingInFragmentShaders No See Perangkat.Info.hasDynamicUniformArrayIndexingInFragmentShaders.
supportsShadows No See Device.SystemInfo.supportsShadows.
supportsRawShadowDepthSampling No See SiteInfo.supportsRawShadowDepthSampling.
supportsMotionVectors No See Perangkat.Info.supportsMotionVectors.
supports3DTextures No See Perangkat.Info.supports3DTextures.
supports2DArrayTextures No See Perangkat.Info.supports2DArrayTextures.
supports3DRenderTextures No See Perangkat.Info.supports3DRenderTextures.
supportsCubemapArrayTextures No See Perangkat.Info.supportsCubemapArrayTextures.
copyTextureSupport No See Perangkat.Info.copyTextureSupport.
supportsComputeShaders No See Perangkat.Info.supportsComputeShaders.
supportsGeometryShaders No See Perangkat.Info.supportsGeometryShaders.
supportsTessellationShaders No See Perangkat.Info.supportsTessellationShaders.
supportsInstancing No See Perangkat.SistemInfo.supportsInstancing.
supportsHardwareQuadTopology No See Perangkat.Info.supportsHardwareQuadTopology.
supports32bitsIndexBuffer No See Perangkat.Info.supports32bitsIndexBuffer.
supportsSparseTextures No See Perangkat.Info.supportsSparseTextures.
supportedRenderTargetCount No See Device.SystemInfo.supportedRenderTargetCount.
supportsSeparatedRenderTargetsBlend No See Perangkat.Info.supportsSeparatedRenderTargetsBlend.
supportedRandomWriteTargetCount No See Device.SistemInfo.supportedRandomWriteTargetCount.
supportsMultisampledTextures No See Perangkat.Info.supportsMultisampledTextures.
supportsMultisampleAutoResolve No See Perangkat.SistemInfo.supportsMultisampleAutoResolve.
supportsTextureWrapMirrorOnce No See Perangkat.Info.supportsTextureWrapMirrorOnce.
usesReversedZBuffer No See Perangkat.Info.usesReversedZBuffer.
npotSupport No See Device.SystemInfo.npotSupport.
maxTextureSize No See Perangkat.Info.maxTextureSize.
maxCubemapSize No See WordPress.org.
maxComputeBufferInputsVertex No See Perangkat.Info.maxComputeBufferInputsVertex.
maxComputeBufferInputsFragment No See Perangkat.Info.maxComputeBufferInputsFragment.
maxComputeBufferInputsGeometry No See Perangkat.Info.maxComputeBufferInputsGeometry.
maxComputeBufferInputsDomain No See Perangkat.Info.maxComputeBufferInputsDomain.
maxComputeBufferInputsHull No See Perangkat.Info.maxComputeBufferInputsHull.
maxComputeBufferInputsCompute No See Perangkat.Info.maxComputeBufferInputsCompute.
maxComputeWorkGroupSize No See Perangkat.Info.maxComputeWorkGroupSize.
maxComputeWorkGroupSizeX No See Perangkat.Info.maxComputeWorkGroupSizeX.
maxComputeWorkGroupSizeY No See Perangkat.Info.maxComputeWorkGroupSizeY.
maxComputeWorkGroupSizeZ No See Perangkat.Info.maxComputeWorkGroupSizeZ.
supportsAsyncCompute No See Perangkat.Info.supportsAsyncCompute.
supportsGraphicsFence No See Perangkat.Info.supportsGraphicsFence.
supportsAsyncGPUReadback No See Perangkat.Info.supportsAsyncGPUReadback.
supportsRayTracing No See Perangkat.Info.supportsRayTracing.
supportsSetConstantBuffer No See Perangkat.Info.supportsSetConstantBuffer.
hasMipMaxLevel No See Device.SystemInfo.hasMipMaxLevel.
supportsMipStreaming No See Perangkat.SistemInfo.supportsMipStreaming.
usesLoadStoreActions No See Perangkat.Info.usesLoadStoreActions.

Definisi perangkat minimal

Definisi perangkat berikut mengandung setiap properti yang diperlukan dan tidak ada sifat opsional. Ini adalah definisi perangkat minimum yang dapat Anda miliki.

Note: Definisi perangkat ini tidak menyediakan data orientasi, sehingga simulator mengasumsikan perangkat mendukung semua orientasi dan bahwa daerah yang aman mencakup seluruh layar.

{
    "friendlyName": "Minimal Device",
    "version": 1,
    "screens": [
        {
            "width": 1080,
            "height": 1920,
            "dpi": 450.0
        }
    ],
    "systemInfo": {
        "operatingSystem": "Android"
    }
}

Definisi perangkat lengkap

Definisi perangkat berikut mengandung setiap properti yang diperlukan dan opsional.

{
    "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,
                "supportsSetConstantBuffer": true,
                "hasMipMaxLevel": true,
                "supportsMipStreaming": true,
                "usesLoadStoreActions": true,
                "supportedTextureFormats": [1, 2, 3, 4, 5],
                "supportedRenderTextureFormats": [1, 2, 3, 4, 5],
                "ldrGraphicsFormat": 59,
                "hdrGraphicsFormat": 74
            }
        ]
    }
}

Membuat overlay perangkat

Overlay perangkat adalah gambar yang mengandung batas layar perangkat dan fitur lain seperti notches, meninju, dan tambahan lainnya untuk persegi panjang layar. Anda dapat secara opsional menggunakannya dengan definisi perangkat untuk memvisualisasikan bagaimana elemen perangkat menghalangi layar perangkat, dan untuk menentukan ketika sentuh input gagal sebagai hasilnya.

Simulator Perangkat menafsirkan piksel transparan sebagai area layar yang dapat Anda ketuk, dan opaque piksel warna lain sebagai area yang menghalangi perangkat keras. Tekstur itu sendiri bisa menjadi bentuk apa pun.

Contoh berikut menunjukkan overlay perangkat untuk dua model iPhone.

Note: Untuk meniru apa yang Anda lihat ketika Anda menggunakan overlay perangkat, contoh ini menampilkan default Unity di area layar di mana Anda dapat tab. Dalam overlay perangkat nyata, piksel ini harus transparan.skyboxJenis khusus Bahan yang digunakan untuk mewakili langit. Biasanya enam sisi. More info
Lihat di Glossary
in the area of the screen where you can tab. In a real device overlay, these pixels should be transparent.

Apple iPhone 8 Overlay Apple iPhone XS Overlay

Menggunakan overlay perangkat

Setelah Anda membuat tekstur overlay perangkat, untuk menggunakannya dengan definisi perangkat, Anda harus mengimpor file tekstur overlay perangkat ke proyek Anda.

Note: Ketika Perangkat Simulator memuat tekstur overlay perangkat, upaya untuk mengaktifkan Read/Write untuk itu. Jika ini tidak mungkin, Simulator Perangkat menampilkan tekstur tetapi tidak dapat menggunakan tekstur untuk memasukkan masker. Ini berarti bahwa jika Anda mengklik notches dan area lain dari layar bahwa overlay perangkat harus masker, Simulator Perangkat mendeteksi input. Untuk memastikan ini tidak terjadi, ketika Anda mengimpor tekstur overlay perangkat, memungkinkan Read/Write di jendela Pengaturan Adapt Tekstur.

Ketika tekstur overlay perangkat berada di proyek Anda, buka file definisi perangkat dan, dalam objek yang mendefinisikan layar perangkat mendukung, tambahkan properti presentation. Di sini, set path ke file gambar (overlayPath) dan ukuran perbatasan (borderSize). Sebagai contoh cara melakukan ini, lihat file definisi perangkat berikut:

{
    "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"
    }
}

Note: Jalur ke file tekstur overlay perangkat dapat relatif terhadap file definisi perangkat, atau relatif ke direktori yang mengandung direktori Assets atau Packages dalam proyek Unity Anda. Misalnya, jika file definisi perangkat berada di direktori Assets/Devices dan file overlay perangkat berada di direktori Assets/Devices/Overlays, path file berikut keduanya valid:

  • Relatif ke file definisi perangkat: Overlays/MinimalDeviceOverlay.png
  • Relatif ke direktori yang berisi direktori Assets: Assets/Devices/Overlays/MinimalDeviceOverlay.png
Kelas simulasi
Memperpanjang simulator perangkat