unity 优化之一

一、纹理

1.禁用读/写启用标志

Read/Write enabled标志导致纹理在内存中保留两次:一次在GPU上,一次在CPU可寻址内存中(1)(注意:这是因为,在大多数平台上,GPU内存的回读非常慢。从GPU读取纹理内存进入临时缓冲区以供CPU代码(例如Texture.GetPixel)使用,这将是非常不符合要求的。)。在Unity中,默认情况下禁用此设置,但可能会意外打开。

Read/Write Enabled只有在Shaders之外操作Texture数据时才需要(例如使用Texture.GetPixelTexture.SetPixelAPI),并且应尽可能避免使用

2.如果可能,请禁用Mipmap

对于相对于相机具有相对不变的Z深度的对象,可以禁用mipmap以节省加载纹理所需的大约三分之一的内存。如果对象更改Z深度,则禁用mipmap会导致GPU上的纹理采样性能更差。

通常,这对于UI纹理和在屏幕上以恒定大小显示的其他纹理非常有用

3.压缩所有纹理

使用适合项目目标平台的纹理压缩格式对于节省内存至关重要。

如果所选纹理压缩格式不适合目标平台,Unity会在加载纹理时解压缩纹理,从而消耗CPU时间和过多的内存。这通常是Android设备上的一个问题,它通常支持截然不同的纹理压缩格式,具体取决于芯片组

window平台 dxt格式

Android平台  etc(不含alpha通道)、etc2(含alpha通道)astc(OpenGL ES 3.2和OpenGL ES 3.1 + AEP GPU以及一些OpenGL ES 3.0 GPU

iOS平台 pvrtc格式

4.实施合理的纹理大小限制

虽然这很简单,但也很容易忘记调整纹理大小或无意中更改纹理大小导入设置。确定不同类型纹理的合理最大大小,并通过代码强制执行这些大小。

对于许多移动应用程序,2048x2048或1024x1024足以用于纹理图集,而512x512足以用于应用于3D模型的纹理

二、模型

1..禁用非角色模型上的animator

默认情况下,Unity为非角色模型导入通用装备。Animator如果在运行时实例化模型,则会导致添加组件。如果模型没有通过动画系统进行动画处理,则会给动画系统增加不必要的开销,因为每帧必须勾选一次所有活动的动画制作者

2.在动画模型上启用“优化游戏对象”选项

“ 优化游戏对象”选项对动画模型具有显着的性能影响。禁用该选项后,Unity会在实例化模型时创建一个镜像模型骨骼结构的大型变换层次结构。此变换层次结构的更新成本很高,尤其是在附加了其他组件(如粒子系统或碰撞器)的情况下。它还限制了Unity多线程网状蒙皮和骨骼动画计算的能力

3.网格渲染器设置

将网格渲染器添加到Prefabs或GameObjects时,请记下组件上的设置。默认情况下,Unity启用阴影投射和接收,光探测采样,反射探测采样和运动矢量计算。

如果项目不需要这些功能中的一个或多个,请确保通过自动脚本关闭它们。添加MeshRenderers的任何运行时代码也需要切换这些设置。

对于2D游戏,在启用阴影选项的情况下意外地将MeshRenderer添加到场景会为渲染循环添加完整的阴影传递。这通常是对性能的浪费

三、音频

1.适合平台的压缩设置

为与可用硬件匹配的音频启用压缩格式。所有iOS设备都包含硬件MP3解压缩器,许多Android设备本身都支持Vorbis。

此外,将未压缩的音频文件导入Unity。Unity在构建项目时总是重新压缩音频。无需导入压缩音频然后重新压缩; 这只会降低最终音频剪辑的质量。

2.将音频剪辑强制为单声道

很少有移动设备实际上有立体声扬声器。在移动项目中,强制导入的音频剪辑为单声道,将其内存消耗减半。此设置也适用于没有立体声效果的任何音频,例如大多数UI声音效果。

3.降低音频比特率

虽然这需要咨询音频设计师,但要尽量减少音频文件的比特率,以进一步节省内存消耗和建立项目大小

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值