基于Unity的Android开发(主要参数的设置)

在正式开始设置之前,应先将发布平台改为Android:

File-->Build Settings-->Platform下选中Android,点击右下角Switch Platform(若无该选项,是因为没有安装Android开发组件,应在Unity Hub中进行安装)

Build Settings

Texture Compression(纹理压缩格式):Android一般选择ETC2(老设备选ETC);

ETC2 fallback(ETC2失败备选):一般选择32-bit内存占用相对大;

Export Project:将项目导出而非发布为apk,可通过Android Studio打开进行二次开发;

Symlink Sources:勾选Export Project时可选,若导出项目后进行二次开发建议勾选,当在AS中修改脚本文件时,Unity端同步修改;

Create symbols.zip:调试应用程序时使用。Debugging可包含完整的调试信息;

Run Device:若连接了外部设备,可选择该设备并点击Build And Run直接安装到设备上;

Build to Device:若满足上述条件,更改项目后,直接点击Patch即可重新部署;

Development Build:开发模式,附加性能分析器到程序上;

Autoconnect Profiler:将Unity的分析器连接到应用程序上;

Deep Profiling:深度剖析应用程序的函数调用,返回详细数据;

Script Debugging:程序在运行时等待调试器的调试。Wait For Managed Debugger程序在运行代码前等待调试器连接;

Compression Method:Default为.zip格式,压缩效果好,解压速度慢;LZ4快速压缩格式,只解压需要的文件;LZ4HC压缩时间较慢,使用时比LZ4效果好;

Player Settings参数

Icon(各设备上使用的图标)

Adaptive(Android8.0及以上);

Round(Android7.1及以上);

Legacy icons(Android7.1以下);

Resolution and Presentation(演示和分辨率设置)

Fullscreen Mode:设置全屏或窗口模式;

Hide Navigation Bar:是否隐藏屏幕顶部导航栏;

Render outside safe area:是否使用所有可用屏幕区域进行渲染(若不勾选,刘海处会有黑边);

Optimized frame Pacing:启用后会自动调整帧率,提升用户体验;

Resolution Scaling:分辨率缩放模式。Disable自动匹配设备屏幕;

Supported Aspect Ratio:支持的纵横比;

Orientation:屏幕方向。Portrait:竖屏;Portrait Upside Down:竖屏倒置;Landscape Right:右横屏;Landscape Left:左横屏;Auto Rotation:自动旋转;

Splash Image(启动图像)

软件启动时显示的动画,免费版强制显示Unity图标,可自定义图标显示。比较容易使用,此处不展开说明。

Other Settings(其他设置)

Rendering(渲染设置)

Color Space色彩空间:Gamma(人眼光照的线性效果,显示为曝光较高),适用于所有平台和较老的设备;Linear(实际光照的线性效果);

Auto Graphics API自动图形接口:自动选择图形API接口,默认Vulkan;

Color Gamut色域:根据目标设备支持选择;

Multithreaded Rendering多线程渲染:将图形API调用从主线程移到单独线程以提高性能;

Static Batching静态批处理:将静态物体合批处理,提升性能;

Dynamic Batching动态批处理:当使用SRP时不起作用。使用FairyGUI时需开启;

Compute Skinning计算蒙皮:启用GPU计算蒙皮,从而释放CPU资源;

Graphics Jobs(Experimental)图形作业:将渲染循环的图形任务移到其他工作线程,减少主线程花费的时间;

Texture Compression Format纹理压缩格式:Build Settings中选择Use Player Settings时启用;

Normal Map Encoding法线地图编码:DXT5nm样式的法线贴图质量更高,但解码成本高;

Lightmap Encoding光照贴图编码;

Lightmap Streaming光照贴图流:对光照贴图使用Mipmap流式处理(适用于视角有远近变化的情况,拉远时会使用质量较低的Mipmap);

Identification(身份证明)

Override Default Package Name是否覆盖默认包名称:Package Name软件包名,用于在设备和安卓商店中的唯一标识(com.公司名.产品名);

Version版本号;

Bundle Version Code内部版本号:不会显示给用户;

Minimum API Level最低API级别;

Target API Level目标API级别;

Configuration(配置)

Scripting Backend脚本后端:Mono将C#编译为.Net公共中间语言CIL,并使用公共语言运行时执行中间语言;IL2CPP将C#编译为CIL,再转换为C++,再将C++编译为本机代码;

Api Compatibility Level(API兼容级别):.Net Framework包含.Net Standard 2.1的所有内容以及更多API的支持,但是生成的包体较大。对于某些高级功能的使用,无更好的替代方案情况下,可尝试使用;

C++ Compiler Configuration(C++编译器配置):开启IL2CPP编译时可选。Debug:关闭所有编译优化,代码生成速度快,但运行速度慢,适用于调试;Release:对代码进行优化,编译时间长,运行会更快,二进制文件更小;Master:实现所有可能的优化,发布时间最长;

Use incremental GC使用增量GC:将GC分散到多个帧上执行,可降低一帧中GC造成的卡顿;

Assembly Version Validation程序集版本验证:Mono是否验证强名称程序集(对程序集强命名,以创建唯一标识)中的类型;

Mute Other Audio Sources:程序运行时,将系统后台其他应用的音频静音;

Target Architectures目标体系结构:允许程序运行的CPU。ARMv7(32位微处理器),ARM64(64位微处理器),x86(32位Chrome OS系统),x86-64(64位Chrome OS系统)。Mono模式仅可选ARMv7,选择的目标体系越多,程序在各平台运行效果越好,但包体越大;

Split APKs by target architecture:仅面向Google Play。当勾选多个目标CPU体系时,将拆分多个apk对应不同设备,用户下载时会自动甄别对应apk进行安装,减少包体大小;

Target Devices:目标设备;

Install Location安装位置:Auto系统自动选择;Prefer External:首选外部磁盘;Force Internal:强制安装到设备内部磁盘;

Internet Access互联网接入:是否始终将网络权限加入权限清单;

Write Permission写入权限:Internal仅授予对内部储存的写入权限;External授予对外部储存的写入权限;

Filter Touches When Obscured:当程序被其他窗口遮挡时,不响应触摸事件;

Active Input Handling活动输入处理:选择输入系统;

Script Compilation(脚本编译)

Script Define Symbols脚本定义符号:在此添加自定义编译标志;

Suppress Common Warnings:禁用CS0169(未使用的私有变量)与CS0649(未分配值的未初始化的私有或内部字段声明)警告;

Allow unsafe Code:启用’不安全’代码(指针);

Optimization(优化)

Prebake Collision Meshes:在构建时将碰撞数据添加到网格,以空间换时间;

Keep Loaded Shaders Alive保持加载的着色器活动状态:由于着色器加载时消耗性能,此选项不允许卸载着色器,以空间换时间;

Preloaded Assets预载资源:在启动程序时预加载的资源;

Strip Engine Code剥离引擎代码:在IL2CPP模式下,能删除Unity引擎中没有使用的代码,显著减少包体大小;

Managed Stripping Level管理剥离等级:用以减少包体大小。Disabled(不剥离,仅Mono下可选),Minimal(仅删除Unity引擎未使用的.Net类库),Low(开发者的代码有可能被剥离),Medium(剥离程度高于Low),High(最大限度剥离代码,可通过link.xml或添加[Preserve]特性手动拒绝剥离);

Vertex Compression顶点压缩:压缩网格数据大小,提高CPU性能;

Optimize Mesh Data优化网格数据:删除未使用的顶点属性以减少包体大小和运存占用。但开启后不能更改材质或着色器相关设置;

Texture MipMap Stripping贴图纹理剥离:根据发布平台质量设置剥离未使用的MipMap贴图;

Stack Trace(堆栈跟踪)

Log Type日志记录设置:None(不记录),ScriptOnly(仅运行脚本时记录),Full(一直记录);Error(错误),Assert(断言),Warning(警告),Log(打印日志),Exception(异常);

Publishing Settings(发布设置)

Keystore Manager密钥(库)管理器:创建及加载密钥(库);

Project Keystore:密钥(库)选择;

Build(构建):Custom Main Manifest自定义主清单文件:用以决定权限和功能设置的xml文件;

Minify(代码混淆与缩小相关):R8(使用R8混淆),Release(发布构建中缩小程序代码),Debug(调试构建中缩小程序代码);

Split Application Binary拆分应用程序二进制文件:将安装包分成主包(APK)与扩展包(OBB),主要解决Google Play安装包大小限制100MB的问题。

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Unity开发中,要获取和设置Android系统的音量,可以通过使用AndroidJavaObject类来实现。 要获取当前的音量设置,可以使用以下代码: ``` // 创建一个Android的AudioManager对象 AndroidJavaObject audioManager = new AndroidJavaObject("android.media.AudioManager"); // 调用getStreamVolume方法获取音量 int currentVolume = audioManager.Call<int>("getStreamVolume", audioManager.GetStatic<int>("STREAM_MUSIC")); // 输出当前音量 Debug.Log("当前音量:" + currentVolume); ``` 要设置音量,可以使用以下代码: ``` // 创建一个Android的AudioManager对象 AndroidJavaObject audioManager = new AndroidJavaObject("android.media.AudioManager"); // 设置音量 // 调用setStreamVolume方法设置音量 audioManager.Call("setStreamVolume", audioManager.GetStatic<int>("STREAM_MUSIC"), targetVolume, 0); ``` 在上述代码中,targetVolume表示要设置的目标音量,0表示设置音量的标志位,可根据需要进行调整。 需要注意的是,以上代码需要在Unity中通过AndroidJNI类来调用Android的相关方法,因此需要将以上代码放置在一个C#脚本中,并确保该脚本绑定到一个GameObject上才能在Unity中正常运行。 ### 回答2: 使用Unity开发获取和设置Android系统的音量可以通过使用AndroidJavaObject和AndroidJavaClass来实现。首先,我们需要获取Context对象来访问系统的AudioManager。 获取音量: 首先,我们需要使用UnityAndroidJavaClass类获取当前活动的Context对象,并使用该对象获取系统的AudioManager对象。 ```csharp AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); AndroidJavaObject audioManager = currentActivity.Call<AndroidJavaObject>("getSystemService", "audio"); int volume = audioManager.Call<int>("getStreamVolume", AudioManager.STREAM_MUSIC); ``` 上述代码中,我们使用UNITYAndroidJavaClass类获取了当前活动的Context对象,然后使用该对象获取了系统的AudioManager对象。最后,我们调用AudioManager的getStreamVolume方法获取音量。 设置音量: 要设置音量,我们可以使用AudioManager的setStreamVolume方法将音量设置为所需的值。 ```csharp audioManager.Call("setStreamVolume", AudioManager.STREAM_MUSIC, desiredVolume, 0); ``` 上述代码中,我们使用audioManager对象的setStreamVolume方法将音量设置为desiredVolume。 需要注意的是,上述代码需要在Android平台上运行。在Unity中,你可以将该代码放入一个自定义脚本中,并将该脚本附加到一个空的GameObject上以确保脚本在运行时得到执行。 ### 回答3: 在Unity开发中获取和设置Android系统的音量可以通过使用AndroidJavaObject类和调用Android的相关API来实现。 首先,通过AndroidJavaClass类和AndroidJavaObject类来获取当前的Activity对象。然后使用Activity对象调用getSystemService方法获取一个AudioManager对象。 获取音量可以调用AudioManager对象的getStreamVolume方法,并传入对应音频类型的常量参数。例如,如果要获取媒体音量,可以将参数设置为AudioManager.STREAM_MUSIC。该方法将返回当前设备的音量值。 设置音量可以调用AudioManager对象的setStreamVolume方法,并传入对应音频类型的常量参数,以及要设置的音量值。例如,如果要设置媒体音量,可以将参数设置为AudioManager.STREAM_MUSIC,将第二个参数设置为期望的音量值。 具体代码如下: ```csharp using UnityEngine; public class VolumeController : MonoBehaviour { void Start() { // 获取当前的Activity对象 AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject activityObject = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity"); // 获取AudioManager对象 AndroidJavaObject audioManager = activityObject.Call<AndroidJavaObject>("getSystemService", "audio"); // 获取媒体音量 int mediaVolume = audioManager.Call<int>("getStreamVolume", AudioManager.STREAM_MUSIC); Debug.Log("媒体音量:" + mediaVolume); // 设置媒体音量 audioManager.Call("setStreamVolume", AudioManager.STREAM_MUSIC, 7); } } ``` 上述代码首先通过获取当前的Activity对象,并调用getSystemService方法获取到AudioManager对象。然后使用AudioManager对象调用getStreamVolume方法获取媒体音量,并使用setStreamVolume方法设置媒体音量为7。 请注意,上述代码需要在Android平台上运行才能生效,并且需要在Unity中的GameObject上添加上述脚本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值