Home 手机平台优化
Post
Cancel

手机平台优化

项目配置优化

1. 降低或禁用加速度计频率

1
Editor->Player->Accelerometer Frequency is disabled

2. 禁用不必要的player和Quality 设置

1
2
 a. disable Auto Graphics API
 b. Disable Target Architectures

3. 禁用不需要的物理

1
如果没有物理可以关闭检查 Auto Simulation 和 Auto Sync Transforms. 

4. 设置合理的帧率

1
Application.targetFrameRate = 30;

5. 优化层次结构

1
2
3
如果场景中含有大量NPC移动物体:
1.将NPC生成在场景的根级别,而不是作为其他对象的子对象。这样一来,NPC移动时只需通知其父级对象,而不需要通知其他对象。
2.将NPC的能力对象(NPC Ability Game Objects)移动到NPC的根级别,而不是作为NavAgent的子对象。这样可以减少需要通知的对象数量。

6. 避免重复转换

1
2
3
Transform.SetPositionAndRotation
GameObject.Instantiate(prefab, parent);
GameObject.Instantiate(prefab, parent, position, rotation);

资源优化

1. 正确导入纹理

1
2
3
4
5
- 降低最大尺寸
- 使用两次幂
- 使用 Unity Sprite Atlas 
- 关闭“已启用读/写”选项
- 禁用不必要的 Mip 映射 

2. 压缩纹理

1
- 使用 ATSC 压缩格式

调整网格导入设置

图形和 GPU 优化

批处理绘制调用

1
2
3
4
- 动态批处理
- 静态批处理
- GPU 实例化
- SRP 批处理

使用帧调试器

1
Frame Debug  ## 避免过多的动态灯光   

禁用阴影

将光照贴图烘焙到光照贴图中

使用光照图层

1
Culling Mask

使用光照探针移动物体

1
光照探针使用球谐波,与动态光相比,球谐波的计算速度非常快

使用详细级别 (LOD)

使用遮挡剔除移除隐藏对象

1
Occlusion Culling

## 降低移动原生分辨率 Screen.SetResolution(width, height, false)

## 限制使用相机

## 保持着色器简单

## 最大限度地减少过度绘制和 alpha 混合

## 限制后期处理效果

## 小心使用 Renderer.material 在脚本中访问 Renderer.material 会复制材质并返回对新副本的引用。这将中断已包含该材料的任何现有批次。如果要访问批处理对象的材质,请改用 Renderer.sharedMaterial。

## 优化 SkinnedMeshRenderer 渲染蒙皮网格的成本很高。确保每个使用 SkinnedMeshRenderer 的对象都需要它。如果游戏对象在某些时候只需要动画,请使用 BakeMesh 函数将蒙皮网格冻结为静态姿势,然后在运行时切换到更简单的 MeshRenderer。

## 最小化反射探头

[官方文档]

This post is licensed under CC BY 4.0 by the author.