Unity3D:添加设备

news2024/11/18 21:33:46

Unity3D:添加设备

推荐:将NSDT场景编辑器加入你的3D工具链

3D工具集:NSDT简石数字孪生

添加设备

若要将新设备添加到设备模拟器,请创建设备定义和设备覆盖。

设备定义是 Unity 项目中扩展名的文本文件。它包含描述设备属性的 JSON。.device

设备覆盖是包含设备屏幕边框的图像,以及凹口、打孔和屏幕矩形的任何其他添加。您可以选择将其与设备定义一起使用,以可视化硬件元素如何阻碍设备屏幕,并确定触摸输入何时因此失败。

创建设备定义

设备定义是表示设备的 JSON 文件。它既有必需的属性,也有一些可选属性。如果设备定义文件包含任何错误,则当您选择该文件时,这些错误将显示在检查器中。

图式

属性必填描述
友好名称要在此设备的 UI 中显示的名称。
版本指示设备定义文件的版本。目前,版本为 .1
屏幕对象列表,每个对象描述要模拟设备的屏幕。这必须至少包含一个屏幕。有关每个屏幕对象的架构的信息,请参阅屏幕。
系统信息描述设备功能的对象。此对象中的值映射到系统信息。有关 systemInfo 对象的架构的信息,请参阅 systemInfo。

屏幕

属性必填描述
宽度屏幕的宽度(以像素为单位)。
高度屏幕的高度(以像素为单位)。
导航栏高度屏幕 Android 导航栏的高度(以像素为单位),该栏在某些设备上未全屏显示时显示。
新闻部屏幕的 dpi。
指引每个对象描述屏幕可以模拟的方向的对象列表。如果未为此属性设置值,则屏幕支持所有方向。有关每个方向对象的架构的信息,请参阅方向。
介绍描述设备覆盖的对象。有关此对象的架构的信息,请参阅演示文稿。

取向

属性必填描述
取向屏幕方向。此属性的值是映射到屏幕方向枚举的数字。
安全区域确定屏幕安全区域的矩形。如果未为此属性设置值,模拟器将假定整个屏幕是安全的。
切口Rect的列表,用于指定无法显示内容的屏幕区域。

介绍

属性必填描述
覆盖路径从设备定义文件到要用作设备覆盖的映像的相对路径。
边框大小从叠加到屏幕开始位置的距离(以像素为单位)。

系统信息

此对象中的属性描述设备的功能和系统信息。由于它们描述系统信息,因此其中许多映射到系统信息中的属性。

属性必填描述
设备型号请参阅 Device.SystemInfo.deviceModel。
设备类型请参阅 Device.SystemInfo.deviceType。
操作系统请参阅设备.系统信息.操作系统。
操作系统家族请参阅 Device.SystemInfo.operatingSystemFamily。
处理器计数请参阅 Device.SystemInfo.processorCount。
处理器频率请参阅 Device.SystemInfo.processorFrequency。
处理器类型请参阅 Device.SystemInfo.processorType。
支持加速度计请参阅 Device.SystemInfo.supportsAccelerometer。
支持音频请参阅 Device.SystemInfo.supportsAudio。
支持陀螺仪请参阅 Device.SystemInfo.supportsGyroscope。
支持定位服务请参阅 Device.SystemInfo.supportsLocationService。
支撑振动请参阅设备.系统信息.支持振动。
系统内存大小请参阅 Device.SystemInfo.systemMemorySize。
不支持的标识符请参阅 Device.SystemInfo.unsupportedIdentifier。
图形依赖数据每个对象描述设备支持的图形 API 的对象列表。有关每个对象的架构的信息,请参阅 graphicsDependentData。

图形依赖数据

对象中的属性描述设备支持的图形 API。

属性必填描述
图形设备类型请参阅 Device.SystemInfo.graphicsDeviceType。
图形内存大小请参阅 Device.SystemInfo.graphicsMemorySize。
图形设备名称请参阅 Device.SystemInfo.graphicsDeviceName。
图形设备供应商请参阅 Device.SystemInfo.graphicsDeviceVendor。
图形设备标识请参阅 Device.SystemInfo.graphicsDeviceID。
graphicsDeviceVendorID请参阅 Device.SystemInfo.graphicsDeviceVendorID。
图形UV馅饼在顶部请参阅 Device.SystemInfo.graphicsUVStartsAtTop。
图形设备版本请参阅 Device.SystemInfo.graphicsDeviceVersion。
图形着色器级别请参阅 Device.SystemInfo.graphicsShaderLevel。
图形多线程请参阅 Device.SystemInfo.graphicsMultiThreaded。
渲染线程模式请参阅 Device.SystemInfo.renderingThreadingMode。
hasHiddenSurfaceRemovalOnGPU请参阅 Device.SystemInfo.hasHiddenSurfaceRemovalOnGPU。
hasDynamicUniformArrayIndexingInFragmentShaders请参阅 Device.SystemInfo.hasDynamicUniformArrayIndexingInFragmentShaders。
支持阴影请参阅 Device.SystemInfo.supportsShadows。
支持原始阴影深度采样请参阅 Device.SystemInfo.supportsRawShadowDepthSampling。
支持运动矢量请参阅 Device.SystemInfo.supportsMotionVectors。
支持3DTextures请参阅 Device.SystemInfo.supports3DTextures。
支持2DArrayTextures请参阅 Device.SystemInfo.supports2DArrayTextures。
支持3DRender纹理请参阅 Device.SystemInfo.supports3DRenderTextures。
支持立方体地图数组纹理请参阅 Device.SystemInfo.supportsCubemapArrayTextures。
复制纹理支持请参阅 Device.SystemInfo.copyTextureSupport。
支持计算着色器请参阅 Device.SystemInfo.supportsComputeShaders。
支持几何着色器请参阅 Device.SystemInfo.supportsGeometryShaders。
支持TessellationShaders请参阅 Device.SystemInfo.supportsTessellationShaders。
支持实例化请参阅 Device.SystemInfo.supportsInstancing。
支持硬件四拓扑请参阅 Device.SystemInfo.supportsHardwareQuadTopology。
支持32位索引缓冲区请参阅 Device.SystemInfo.supports32bitsIndexBuffer。
支持稀疏纹理请参阅 Device.SystemInfo.supportsSparseTextures。
支持的渲染目标计数请参阅 Device.SystemInfo.supportedRenderTargetCount。
supportsSepardRenderTargetsBlend请参阅 Device.SystemInfo.supportsSepardRenderTargetsBlend。
支持的随机写入目标计数请参阅 Device.SystemInfo.supportedRandomWriteTargetCount。
支持多重采样纹理请参阅 Device.SystemInfo.supportsMultisampledTextures。
支持多采样自动解析请参阅 Device.SystemInfo.supportsMultisampleAutoResolve。
支持纹理包装镜像一次请参阅 Device.SystemInfo.supportsTextureWrapMirrorOnce。
用途反转ZBuffer请参阅 Device.SystemInfo.usesReversedZBuffer。
npot支持请参阅 Device.SystemInfo.npotSupport。
最大纹理大小请参阅 Device.SystemInfo.maxTextureSize。
最大立方体地图大小请参阅 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。
最大计算工作组大小请参阅 Device.SystemInfo.maxComputeWorkGroupSize。
maxComputeWorkGroupSizeX请参阅 Device.SystemInfo.maxComputeWorkGroupSizeX。
maxComputeWorkGroupSizeY请参阅 Device.SystemInfo.maxComputeWorkGroupSizeY。
maxComputeWorkGroupSizeZ请参阅 Device.SystemInfo.maxComputeWorkGroupSizeZ。
支持异步计算请参阅 Device.SystemInfo.supportsAsyncCompute。
支持图形围栏请参阅 Device.SystemInfo.supportsGraphicsFence。
支持AsyncGPUReadback请参阅 Device.SystemInfo.supportsAsyncGPUReadback。
支持光线追踪请参阅 Device.SystemInfo.supportsRayTracing。
支持设置常量缓冲区请参阅 Device.SystemInfo.supportsSetConstantBuffer。
hasMipMaxLevel请参阅 Device.SystemInfo.hasMipMaxLevel。
支持MipStreaming请参阅 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,
                "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
            }
        ]
    }
}

创建设备覆盖

设备覆盖是包含设备屏幕边框和其他功能(如凹口、打孔和屏幕矩形的任何其他添加)的图像。您可以选择将其与设备定义一起使用,以可视化硬件元素如何阻碍设备屏幕,并确定触摸输入何时因此失败。

设备模拟器将透明像素解释为可以点击的屏幕区域,将任何其他颜色的不透明像素解释为硬件遮挡的区域。纹理本身可以是任何形状。

以下示例显示了两种 iPhone 机型的设备叠加。

注意:为了模拟使用设备叠加时看到的内容,这些示例在屏幕区域显示 Unity 的默认天空盒,您可以在其中按 tab 键显示。在实际设备叠加中,这些像素应该是透明的。

苹果 IPHONE 8 叠加层苹果苹果IPHONE XS叠加层

使用设备覆盖

创建设备覆盖纹理后,若要将其与设备定义一起使用,必须先将设备覆盖纹理文件导入到项目中。

注意:当设备模拟器加载设备覆盖纹理时,它会尝试为其启用读/写。如果无法做到这一点,设备模拟器将显示纹理,但无法使用纹理来屏蔽输入。这意味着,如果单击设备覆盖应屏蔽的凹口和屏幕其他区域,设备模拟器将检测输入。为确保不会发生这种情况,导入设备叠加纹理时,请在纹理导入设置窗口中启用读/写

当设备覆盖纹理位于项目中时,打开设备定义文件,并在定义设备支持的屏幕的对象中添加演示文稿属性。在这里,设置图像文件的路径 () 和边框的大小 ()。有关如何执行此操作的示例,请参阅以下设备定义文件: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 项目中包含资源目录的目录。例如,如果设备定义文件位于资产/设备目录中,设备覆盖文件位于资产/设备/覆盖目录中,则以下文件路径均有效:

  • 相对于设备定义文件:覆盖/最小设备覆盖.png
  • 相对于包含资产目录的目录:资产/设备/覆盖/最小设备覆盖.png

此文由3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:模拟类 (mvrlink.com)

下一篇:Unity3D:扩展设备模拟器 (mvrlink.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/681622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构第六章 图 6.4 图的应用 错题整理

4.A A. 不是简单路径的话,有环,去环路径会更短 B. 适合的 弗洛伊德算法才不适合 C. 本来就是 D 2X2矩阵拓展到3X3矩阵 再扩大 若是子集 即加入新顶点后,最短路径都没有变,错 5.B 本题用弗洛伊德更合适 但这道题只需全部代入求最…

chatgpt赋能python:Python简单计算器代码

Python简单计算器代码 Python是一种高级的编程语言,被广泛用于开发各种类型的应用程序,包括计算器应用程序。在本文中,我们将介绍Python简单计算器代码的实现和用法。 Python简单计算器代码介绍 一个简单的计算器能够实现基本的算术运算&a…

回溯注意点:回溯时间复杂度的计算与剪枝操作

文章目录 回溯的时间复杂度计算示例1:77.组合示例2:216.组合总和Ⅲ示例3:17.电话号码字母组合关于剪枝对时间复杂度的影响 回溯的剪枝操作必要性及适用场景示例1:组合剪枝剪枝优化点: 示例2:组合剪枝剪枝优…

STL容器(持续更新中)

一、string类 1. 构造函数 常用的构造函数如下。 构造函数原型含义string()默认构造函数。创建一个默认string对象,长度为0string(const string &s)拷贝构造函数。用一个string对象初始化另一个string对象string(const char *s)用字符串常量构建string对象st…

Linux系统编程(vfork和fork)

文章目录 前言一、vfork讲解二、vfork使用三、exit和_exit1.exit和_exit对比2.在vfork中的使用 四、vfork和fork区别总结 前言 本篇文章讲解vfork和fork创建进程的区别。 一、vfork讲解 vfork 是一个在类Unix操作系统中的系统调用,它创建一个新进程,且…

欠拟合、过拟合、正则化、学习曲线

1.欠拟合、过拟合、正则化、学习曲线 1.1 欠拟合、过拟合 欠拟合:模型相对于要解决的问题来说太简单了,模型并没有拟合训练数据的状态 过拟合:模型相对于要解决的问题来说太复杂了,模型只能拟合训练数据的状态 下图来自&#x…

第41步 深度学习图像识别:Efficientnet建模(Tensorflow)

一、写在前面 (1)Efficientnet EfficientNet是Google在2019年提出的一种新的卷积神经网络架构,主要目标是提高模型的效率,即在保持或提高模型性能的同时,尽可能地降低模型的复杂性和计算需求。 EfficientNet的关键思…

【MySQL】表的内外连接

目录 一、内连接(表1 inner join 表2 on) 1、显示SMITH的名字和部门名称 二、外连接 1、左外连接(表名1 left join 表名2 on) 1.1查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出…

2022(一等奖)D775北部湾红树林生理结构参数对水位变化的响应特征研究

作品介绍 1 应用背景 红树林作为全球生产力最高的生态系统之一,是生长在热带、亚热带海湾的一种特殊的木本植物群落。它由于其独特的海陆过渡特性,在维持滨海生态稳定、促进海陆能量循环中起着重要作用。同时,红树林可以吸附温室气体&#x…

第十二章 EfficientNetv2网络详解

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…

Python爬取数据并进行数据CRUD的Web可视化项目

项目内容简介 爬取网站https://book.douban.com/top250上面的Top250数据,然后将数据保存到Mysql数据库中,最后这些数据记录以Web的方式进行展示,并实现对这些数据记录的CRUD(增删改查)! 项目实现简介 对豆瓣网站的爬虫的实现。 见项目中的爬取豆瓣Top250脚本(beautifulSoup).…

Linux下MySQL的安装与使用

文章目录 安装前说明Linux系统及工具的准备查看是否安装过MySQLMySQL的卸载 MySQL的Linux版安装下载MySQL指定版本CentOS7下检查MySQL依赖CentOS7下MySQL安装过程 查看MySQL版本服务的初始化启动MySQL,查看状态查看MySQL服务是否自启动 MySQL登录设置远程登录 安装前…

【计算机组成原理】输入输出系统

目录 一、外部设备概述 二、输入输出接口 三、主机与外设交换信息的方式 四、中断系统 五、中断请求 六、中断响应 七、中断服务 一、外部设备概述 外部设备在计算机系统中的作用: 人机对话的重要设备(交互)完成数据媒体变换的设别&…

chatgpt赋能python:Python等待一秒-程序员必知的等待操作

Python等待一秒 - 程序员必知的等待操作 时间是宝贵的资源,你可能会需要让你的Python程序等待一段时间才能继续执行。在这篇文章中,我们将学习如何使用Python等待一秒,包括为什么需要等待,以及在Python中如何等待。 为什么需要等…

前端web入门-CSS-day07

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 定位 相对定位 绝对定位 定位居中 固定定位 堆叠层级 z-index 定位-总结 高级技巧 CSS 精灵 字…

QT(一) 安装 QT(二)GUI程序设计基础

第一章 : Qt 安装 下载地址安装 打开 cmd 运行镜像 : qt-unified-windows-x64-4.6.0-online.exe --mirror https://mirrors.aliyun.com/qt Hello 因为是qmake 所以是.proCtrl R 直接运行 第二章 GUI程序设计基础 main文件 *.ui : 有UI设计器自动生成…

操作系统02-OS结构

目录 一、概述 二、内容 三、总结 一、概述 操作系统以服务的形式向程序和用户提供执行程序的基本服务,包括用户界面、程序执行、IO操作、文件系统操作、通讯、错误监测等。 二、内容 2.1 OS服务和接口 1 操作系统服务 2 操作系统程序接口:系统调…

阿里架构师分享分布式架构笔记文档:Nginx+Redis+ZK+Kafka+MQ等

Nginx Nginx 是一款非常优秀的开源软件,工作需要,研究了很久一段时间的 Nginx 源码,在研究学习的过程中收益颇多。作为高性能服务器的代表,为了追求极致的高性能,在许多方面,Nginx 的源码实现都可以称得上…

Reqable HTTP一站式开发+调试工具(小黄鸟作者另一力作、小黄鸟完美替代品)

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!Reqable HTTP一站式开发+调试工具(小黄鸟作者另一力作、小黄鸟替代品) 环境 win10pixel4Android13概览 …

JS将PDF转图片,pdfjs的使用

Hi I’m Shendi 最近做转换工具,需要将pdf转图片,这里记录下来 JS将PDF转图片,pdfjs的使用 简介 A general-purpose, web standards-based platform for parsing and rendering PDFs. 一个通用的、基于web标准的平台,用于解析和…