[Unity]Unity跨平台开发之Android入门

安卓环境配置

安装依赖项

推荐使用Unity Hub进行安装,安装时勾选Android Build SupportAndroid SDK & NDK ToolsOpenJDK。或者指定已安装的依赖项。(注意:指定的依赖项需要是从UnityHub安装的。比如之前安装Unity2022时勾选了上述依赖项,在全新安装Unity2023时可以指定之前安装的依赖项)

自定义安装

Edit > Preferences > External Tools > Android (macOS: Unity > Settings > External Tools > Android)

设置Android SDK目标API

注意:在Windows平台上选择默认安装位置时,Unity编辑器会安装在(/Program Files/)文件夹下,这时需要以管理员权限运行sdkmanager来更新SDK。

SDK对应版本

Unity version

SDK tools version

SDK Build tools version

SDK Command-line tools version

SDK Platform tools version

2022.3 LTS

26.1.1

34.0.0

6

32.0.0

2021.3 LTS

26.1.1

32.0.0

6

32.0.0

2020.3 LTS

26.1.1

30.0.2

2

28.0.1

NDK对应版本

Unity version

NDK version

2022.3 LTS

r23b (23.1.7779620)

2021.3 LTS

r21d (21.3.6528147)

2020.3 LTS

r19 (19.0.5232133)

JDK对应版本

Unity version

JDK version

2022.3 LTS

11 (OpenJDK version 11)

2021.3 LTS

11 (OpenJDK version 11)

2020.3 LTS

8 (OpenJDK version 1.8)

Android Player settings

渲染在安全区外(Render outside safe area):启用此选项可允许应用程序使用所有可用的屏幕空间进行渲染,包括显示屏上被切掉(有缺口)的区域。有关更多信息,请参阅Android 的显示屏切口支持文档。此设置的行为因Android版本的不同而异,如下表所示。

Android 15及之后

此设置无效,因为应用程序默认使用整个屏幕空间。有关更多信息,请参阅Android文档。

Android11-14

启用后,应用会使用整个可用的屏幕空间。禁用后,仅当挖孔位于系统栏(设备顶部或底部)内时,应用才会使用挖孔周围的空间,否则应用会在挖孔区域上显示黑条。有关应用何时使用挖孔周围空间的更多信息,请参阅Android文档。

Android10及之前

启用后,应用会使用设备较短边缘(例如顶部或底部)上刘海周围的屏幕空间。但是,应用会用黑条遮挡设备较长边缘(例如侧面)上的刘海。有关应用如何使用较短边缘上刘海周围空间的更多信息,请参阅Android文档。禁用后,仅当刘海位于系统栏内时,应用才会使用刘海周围的空间,否则应用会在刘海区域上显示黑条。有关应用何时使用刘海周围空间的更多信息,请参阅Android文档。

优化帧速率(Optimized Frame Pacing)

启用此选项可让 Unity 均匀分布帧,以减少帧速率的变化并创造更流畅的体验(有坑,慎用)。

分辨率缩放(Resolution Scaling)

使用“分辨率缩放”部分自定义与屏幕分辨率缩放相关的设置。使用低于设备原始分辨率的分辨率可以提高性能和延长电池寿命。

Blit Type

控制是否使用blit将最终图像渲染到屏幕上。使用blit与大多数设备兼容,但通常比不使用 blit慢。

Always

Unity渲染到屏幕外缓冲区,然后使用blit将缓冲区的内容复制到设备的帧缓冲区。这兼容大多数设备,但通常比不使用blit更慢

Never

Unity渲染到设备操作系统提供的帧缓冲区。如果失败,应用程序会向设备日志打印一次性警告。这通常比使用blit更快,但并不兼容所有设备。

Auto

如果可能,Unity会渲染到设备操作系统提供的帧缓冲区。如果失败,Unity会向设备控制台打印警告,并使用位块传输将最终图像渲染到屏幕上。

渲染(Rendering)

属性

描述

颜色空间(Color Space)

选择用于渲染的颜色空间:Gamma或者Linear。请参阅线性渲染概述以了解两者之间的区别(Gamma是历史上标准的色彩空间,linear是显示效果更加精准的色彩空间)。

自动图形API(Auto Graphics API)

禁用此选项可手动选择并重新排序图形API。默认情况下,此选项处于启用状态,Unity会尝试使用Vulkan。如果设备不支持Vulkan,Unity将回退到 GLES3.2、GLES3.1 或 GLES3.0。

重要提示:仅当禁用Auto Graphics API时 GLES2 不在 API 列表中时,Unity才会将GLES3/GLES3.1/AEP/3.2要求添加到您的Android应用清单中。仅在这种情况下,您的应用才不会出现在Google Play商店中不受支持的设备上。

Require ES3.1/ES3.1+AEP/Require ES3.2

表示OpenGL最低版本要求是否为3.1/3.1+AEP/3.2。

颜色色域(Color Gamut)

您可以添加或删除用于渲染的色域。单击加号(+)图标可查看可用色域列表。色域定义了给定设备(如显示器或屏幕)可用的颜色范围。sRGB色域是默认(和必需)色域。

多线程渲染(Multithreaded Rendering)

启用此功能,可以将图形API调用放在单独的线程中。这有利于优化Unity主线程上CPU性能。

静态批处理

启用则打开静态批处理。

精灵批处理阈值(Sprite

 Batching Threshold)

控制批处理最大顶点数阈值。

GPU计算蒙皮(GPU Compute Skinning)

通过着色器在GPU上计算蒙皮和混合,来释放CPU压力,提高性能。

图形工作(实验性的)(Graphics Jobs (Experimental))

启用此选项可以将图形任务(例如渲染循环)从CPU主线程上卸载至其他核心上的工作线程中。这旨在减少主线程上Camera.Render所花费的时间,这通常是瓶颈。

注意:此功能是实验性的。它可能不会为您的项目带来性能改进,并且可能会引入新的崩溃。

图片压缩格式(Texture compression format)

在ASTC、ETC2和ETC之间进行选择(ETC1适用于RGB,ETC2适用于RGBA)。请参阅纹理压缩格式概述,了解有关如何选择正确格式的更多信息。

请参阅纹理压缩设置,了解有关它如何与构建设置中的纹理压缩设置交互的详细信息。

法线贴图编码(Normal Map Encoding)

修改此设置会影响法线贴图编码设置和压缩设置。DXT5nm-style格式质量更高,但是在着色器中解码的成本更高。

光照贴图编码(Lightmap Encoding)

Low QualityNormal Quality,或者High Quality。会影响光照贴图编码设置和压缩设置

光照贴图流(Lightmap Streaming)

是否对光照贴图使用Mipmap Streaming。Unity在生成光照贴图时会将此设置应用于所有光照贴图。

注意:要使用此设置,必须启用“Texture Streaming Quality”设置。

串流优先级(StreamingPriority)

设置Mipmap Streaming系统中所有光照贴图的优先级。Unity在生成所有光照贴图时会应用此设置。

数值越大优先级越高。有效值范围为-128至127。

配置

属性

描述

脚本后端(Scripting Backend)

脚本后端的选项会决定Unity如何编译处理C#脚本。

Mono

将C#代码编译为.NET通用中间语言(CIL),并在运行时使用通用语言执行该CIL。有关更多信息,请参阅Mono。

IL2CPP

将C#代码编译为CIL,将CIL转换为C++,然后将C++编译为本机机器代码,该代码在运行时直接执行。有关更多信息,请参阅IL2CPP。

API兼容级别(API Compatibility Level)

不同的API几乎不会影响Unity自身代码,但是有可能会影响第三方插件里的C#代码兼容性。假如第三方插件出现兼容性错误,可以尝试修改下面的设置。

.Net Framework

与.NET Framework4兼容(其中包括.NET Standard 2.0 配置文件中的所有内容以及其他 API)。使用访问.NET Standard 2.0中未包含的 API 的库时,请选择此选项。他会生成体积更大的版本,并且其附加API不一定在所有平台上都受支持。有关更多信息,请参阅引用其他类库程序集。

.Net Standard 2.1

生成较小的构建并具有完整的跨平台支持。

IL2CPP代码的生成(IL2CPP Code Generation)

定义如何生成IL2CPP。这个选项仅在启用了IL2CPP脚本后端时才会显示。

Faster runtime

生成针对运行时性能优化的代码。此设置默认启用。

Faster (smaller) builds

生成针对构建大小和迭代优化的代码。此设置会生成较少的代码并生成较小的构建,但会降低通用代码的运行时性能。对构建时间要求高的话(例如在对更改进行迭代时),请使用此选项。

C++编译配置(C++ Compiler Configuration)

设置IL2CPP在编译时的配置

Debug

关闭所有优化,代码构建会更快但运行会更慢。

Release

启用优化,编译后的代码运行更快,二进制文件更小,但编译时间长。

Master

启用所有可能的优化,尽可能地提高性能。例如,在使用 MSVC++ 编译器的平台上,此选项可启用链接时代码生成。使用此配置编译代码所需的时间可能比使用 Release 配置所需的时间长得多。如果构建时间的增加可以接受,Unity 建议使用 Master 配置构建游戏的正式版。

使用增量GC(Use incremental GC)

增量GC会将垃圾回收分散在多个帧上,以减少某个帧持续垃圾回收造成的峰值。有关更多信息,请参阅自动内存管理。

允许通过HTTP下载(Allow downloads over HTTP)

默认不允许,因为HTTPS更加安全。

停用后台音频(Mute Other Audio Sources)

启用时当游戏进入前台时会停止播放其他后台音乐。

按目标架构拆分APK(Split APKs by target architecture)

启用后可根据不同CPU架构去生成不同的APK,使得Google Play用户可以下载更小的包体。这个功能主要适用于Google Play商店,其他商店不一定支持。具体可参阅多版本APK支持。

安装位置(Install Location)

指定应用程序在设备上的安装位置(有关详细信息,请参阅Android 开发者文档中的安装位置。)

Automatic

由操作系统决定,且用户可以来回切换。

Prefer External

如果可以,游戏会优先安装至外部储存。反之会安装在内置储存中。

Force Internal

强制安装在内部储存中,且不支持切换至外部储存。

着色器设置

属性

描述

着色器精度模型(Shader Precision Model)

设置默认着色器精度。更多信息可以参考使用16位精度着色器。

Platform default

移动平台上使用低精度,其他平台上使用高精度。

Unified

如果平台支持,则使用低精度。

Use platform

defaults for

sampler

precision

优点:

使用目标平台的默认采样器精度。通常在高端设备上选择高精度,在低端设备上选择低精度。提供较好的性能和兼容性平衡。

缺点:

不完全可控,不同平台的表现可能不一致。

Use full sampler precision by default, lower precision explicitly declared

强制使用高精度(Full Precision)作为采样器的默认精度,只有在着色器中明确声明时才使用低精度。

优点:

确保最高的视觉质量,避免因低精度导致的采样伪影或视觉瑕疵。

缺点:

可能会增加性能消耗,特别是在低端设备上会更明显。

使已加载的

Shader始终处于活跃

保持所有已加载的着色器处于活跃状态并防止被卸载。有关详细信息,请参阅着色器加载。

着色器变体加载的设置(Shader Variant Loading Settings)

使用这些设置来控制着色器在运行时的内存使用量。

属性

描述

默认块大小(Default chunk size (MB))

设置Unity在您构建的应用程序中为所有平台存储的压缩着色器变体数据块的最大大小。默认值为16。有关更多信息,请参阅着色器加载。

默认块数(Default chunk count)

设置Unity在所有平台上保留在内存中的解压缩块数量的默认限制。默认值为0,表示没有限制。

覆盖(Override)

允许覆盖此构建目标的默认块大小和默认块数。

脚本编译

优化

属性

描述

预烘焙碰撞网格(Prebake Collision Meshes)

在构建时向网格添加碰撞数据。

预加载资产(Preloaded Assets)

设置播放器在启动时要加载的资源数组。要添加新资源,请增加Size

属性的值,然后在出现的新元素框中设置要加载的资源的引用。

剥离引擎代码(Strip Engine Code)

如果您希望Unity Linker工具删除项目未使用的Unity Engine功能的代码,请启用此选项。此设置仅适用于IL2CPP 脚本后端。

大多数应用程序不会使用每个可用的DLL。此选项会删除应用程序未使用的 DLL,以减小构建的播放器的大小。如果您的应用程序正在使用一个或多个在当前设置下通常会被删除的类,则当您尝试构建应用程序时,Unity会显示一条调试消息。

设置剥离级别(Managed Stripping Level)

选择Unity剥离未使用的托管 (C#) 代码的等级。选项包括MinimalLowMediumHigh

当Unity构建您的应用时,Unity Linker进程可以从您的项目使用的托管DLL 中剥离未使用的代码。剥离代码可以使生成的可执行文件显著变小,但有时可能会意外删除正在使用的代码。

有关这些选项和使用 IL2CPP 剥离字节码的更多信息,请参阅ManagedStrippingLevel。

不同等级的区分

Disabled

不剥离任何代码。

Low

删除无法访问的托管代码以减少构建大小和Mono/IL2CPP 构建时间。

Medium

在比Low更不保守的模式下运行UnityLinker。这将进一步减少Low无法实现的代码大小。但是,这种额外的减少可能伴随着一些权衡。可能的副作用包括必须维护自定义 link.xml 文件,并且某些反射代码路径的行为可能不同。

High

UnityLinker将尽可能地精简代码。这将进一步减少Medium 无法实现的代码大小。但是,这种额外的减少可能会带来一些权衡。可能的副作用包括,某些方法的托管代码调试可能不再有效。您可能需要维护自定义link.xml 文件,并且某些反射代码路径的行为可能不同。

Minimal

类库、UnityEngine和Windows运行时程序集将被剥离。所有其他程序集都将被复制。

顶点压缩(Vertex Compression)

设置每个通道的顶点压缩。这会影响项目中的所有网格。

通常,顶点压缩用于减少内存中的网格数据大小、减小文件大小并提高GPU 性能。

有关如何配置顶点压缩以及此设置的限制的更多信息,请参阅压缩网格数据。

优化网格数据(Optimize Mesh Data)

启用此选项可从构建中使用的网格中剥离未使用的顶点属性。此选项可减少网格中的数据量,从而有助于减少构建大小、加载时间和运行时内存使用量。

警告:如果启用了此设置,请记住不要在运行时更改材质或着色器设置。

有关更多信息,请参阅PlayerSettings.stripUnusedMeshComponents。

剥离纹理 MipMap(Texture MipMap Stripping)

为所有平台启用mipmap剥离。这会在构建时从纹理中剥离未使用的 mipmap。Unity通过将mipmap的值与当前平台的Quality Setting进行比较来确定未使用的mipmap。如果mipmap值被排除在当前平台的每个Quality Setting之外,则Unity会在构建时从构建中剥离这些mipmap。如果QualitySettings.masterTextureLimit设置为已剥离的mipmap值,则Unity会将该值设置为未剥离的最接近的mipmap值。


注:文章摘要翻译自Unity官方手册,版本2022.3x。

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

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

相关文章

(2024年最新)Linux(Ubuntu) 中配置静态IP(包含解决每次重启后配置文件失效问题)

Hello! 亲爱的小伙伴们,大家好呀(Smile~)!我是Huazzi,欢迎观看本篇博客,接下来让我们一起来学习一下Ubuntu 中如何配置静态IP吧!祝你有所收获! 提前对Linux有所了解的小伙伴应该知道…

vue3渲染el-tree组件,给默认选中的节点,禁用所有子节点

实现逻辑&#xff1a;给默认选中节点的所有子节点添加一个disabled属性&#xff0c;以此禁用子节点。 编写代码 <template><el-tree :props"{ children: children, label: name }" :data"treeListData" show-checkbox node-key"id" r…

uniapp中vuex(全局共享)的应用

一、Vuex概述 1.1 官方解释 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 它采用集中式存储管理 应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化 - Vuex 也集成到 Vue 的官方调试工具 devtools extension&#xff0c;提供了诸…

Unity中触发器Trigger无法被射线检测到的问题

今天在做项目的时候发现,同一个物体,当他是碰撞器的时候,可以被射线检测到. 但是当他变成触发器的时候,射线就检测不到了??? 本来以为就是这样的,但是查了资料发现并没有这样的限制,触发器也是可以正常被射线检测的 到处查资料都没有发现问题,后来发现是下面这个设置不知道…

搭建springmvc项目

什么是springmvc MVC它是一种设计理念。把程序按照指定的结构来划分: Model模型 View视图 Controller控制层 springmvc框架是spring框架的一个分支。它是按照mvc架构思想设计的一款框架。 springmvc的主要作用: 接收浏览器的请求数据&#xff0c;对数据进行处理&#xff0c;…

超越 RAG 基础:AI 应用的高级策略

作者&#xff1a;来自 Elastic Elastic Platform Team 我们最近与 Cohere 举办的虚拟活动深入探讨了检索增强生成 (retrieval augmented generation - RAG) 的世界&#xff0c;重点讨论了在概念验证阶段之后构建 RAG 应用程序的关键注意事项。我们的演讲者是 Elastic 的首席解…

音频开发中常见的知识体系

在 Linux 系统中&#xff0c;/dev/snd 目录包含与声音设备相关的文件。每个文件代表系统中的一部分音频硬件或音频控制接口。以下是你列出的文件及其含义&#xff1a; 一.基本术语 样本长度(sample)&#xff1a;样本是记录音频数据最基本的单位&#xff0c;计算机对每个通道采…

贪心算法 part01

class Solution { public:int maxSubArray(vector<int>& nums) {int result INT32_MIN;int count 0;for (int i 0; i < nums.size(); i) {count nums[i];if (count > result) { // 取区间累计的最大值&#xff08;相当于不断确定最大子序终止位置&#xff…

Ubuntu 安装texstudio sty与texlive

手动安装需要的包 访问CTAN网站&#xff08;Comprehensive TeX Archive Network&#xff09;并下载enumitem宏包&#xff1a; enumitem CTAN页面下载后&#xff0c;将宏包解压到/usr/share/texmf/tex/latex/下。 可打开texstudio/帮助/宏包帮助下载。 如果不想手动安装一个个…

Moretl安全日志采集工具

永久免费: 至Gitee下载 使用教程: Moretl使用说明 使用咨询: 用途 定时全量或增量采集工控机,电脑文件或日志. 优势 开箱即用: 解压直接运行.不需额外下载.管理设备: 后台统一管理客户端.无人值守: 客户端自启动,自更新.稳定安全: 架构简单,兼容性好,通过授权控制访问. 架…

CAN配置---波特率中断引脚等---autochips-AC7811-ARM-M3内核

1、配置工具 虽然不怎么好用&#xff0c;但比没有强多了。具体看图&#xff1a; 时钟选着 NVIC配置 GPIO配置 2、生成的具体配置信息 NXP的配置工具里面&#xff0c;具体的波特率可以直接显示&#xff0c;这个工具没有&#xff0c;怎么办&#xff1f; 它放到了生成的代码里面…

【ETCD】ETCD 架构揭秘:内部各组件概览

ETCD 的主要组件及它们之间的关联关系如下&#xff1a; 目录 1. Client&#xff08;客户端&#xff09;2. gRPC 接口3. Etcd Server Main Loop&#xff08;ETCD 主循环&#xff09;4. Raft&#xff08;共识模块&#xff09;5. Peer Etcd Nodes&#xff08;ETCD 集群节点&#x…

乐凡信息智能安全管控方案:助力油气田行业安全管控多方位升级

我国油田地域广阔&#xff0c;分布着大量各种油井&#xff0c;油井开采设备的连续稳定运行是保证石油开采的首要条件。然而&#xff0c;由于油田多位于特殊地理环境中&#xff0c;因而实现油井之间的通信首要问题就是要克服地理环境所带来的限制&#xff0c;传统通信系统的建设…

windows 使用python共享网络给另外一个网卡

# -*- coding: utf-8 -*- import subprocessdef open_share(to_shared_adapter, from_shared_adapter):"""打开以太网的网络共享:return: None"""powershell_script f"""# Register the HNetCfg library (once)# regsvr32 hnetc…

深度学习实战智能交通计数

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对车辆目标数据集进行训练和优化&#xff0c;该数据集包含丰富的车辆目标图像样本…

rebase ‘A‘ onto ‘master‘ 和 merge ‘master‘ into ‘A‘有什么区别

在Git版本控制系统中&#xff0c;rebase 和 merge 是两种不同的操作&#xff0c;用于合并分支。rebase A onto master 和 merge master into A 虽然最终目的都是将两个分支的更改合并在一起&#xff0c;但它们在处理方式和结果上有所不同。 rebase ‘A’ onto ‘master’ 含义…

MySQL Explain 分析SQL语句性能

一、EXPLAIN简介 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 &#xff08;1&#xff09; 通过EXPLAIN&#xff0c;我们可以分析出以下结果&#xff1a; 表的读取顺序数据读取…

关于SAP Router连接不稳定的改良

这个也是网上看来的&#xff0c;之前在用的时候也在想是不是建立一个长连接&#xff0c;就不至于断线。今天正好看到。 关于SAP Router连接不稳定的改良 我们在使用SAPRouter时经常会碰到断线&#xff0c;其发生原因有很多&#xff0c;如&#xff1a;网络不稳定、操作间隔时间…

游泳溺水识别数据集,对9984张原始图片进行YOLO,COCO JSON, VOC XML 格式的标注,平均识别率在91.7%以上

游泳溺水识别数据集&#xff1a; 对9984张原始图片进行YOLO&#xff0c;COCO JSON, VOC XML 格式的标注&#xff0c;平均识别率在91.7&#xff05;以上 &#xff0c;可识别泳池或者水库中是否有人溺水。 数据集分割 训练组98&#xff05; 9818图片 有效集&#xff05;…

Docker的容器编排

目录 1. 什么是容器编排&#xff08;Docker Compose&#xff09;2. 容器编排的功能3. 容器编排文件&#xff08;docker-compose.yml&#xff09;的介绍3.1 文件语法版本3.2 文件基本结构及常见指令 4. Docker Compose命令详解4.1 Docker Compose命令清单4.2 命令格式和常见选项…