介绍游戏性能优化的必要性

  • 游戏启动优化Resource文件夹(是否可以存放很多东西)

  • 游戏启动优化MonoBehaviour (Mono类应该使用多少,这些类逻辑应该是什么样的)

  • 重复资源优化(会出现哪样问题)

  • 纹理设置优化(减少内存提高效率)

  • 纹理MipMap选择

  • 纹理压缩优化 (对不同平台,每个平台格式不对会怎么样,比如重新解压)

  • 非角色模型优化(脚本控制优化,减少渲染)

  • 动画模型优化(提升了什么)

  • 网格优化(对游戏点面处理的优化)

  • 字符串优化1(拼接,比较,如果在update中不正确调用)

  • 字符串优化2

  • 集合List优化 (内存分部销毁)

  • 闭包优化(什么时候调用合适,怎么规避怎么优化)

  • 字典和枚举优化(内存分布,遍历效率)u

  • foreach优化(什么时候用forin 什么时候用for代替)

  • 数组优化(少用多用List)

  • 正则表达式优化

  • 矢量运算顺序优化

  • 颜色转换优化(颜色是自带的还是unity自带api)

  • object查找优化

  • 摄像机访问优化(单例访问优化)

  • log输出优化(日志单打印,debug处理)

  • 方法调用优化(方法调用方法不对,会导致内存不断分配和继承堆不断计算)

内存优化小知识

  • 压缩自带类库;

  • 将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;

  • 释放AssetBundle占用的资源;

  • 降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;

  • 使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。

  • 警惕配置表内存占用

  • 排查项目冗余的shader

  • 减少容器扩容或者利用string字符串拼接等一系列产生GC的操作

    CPU优化小知识

  • 使用mvc框架,将逻辑层和表示层分开。

  • 用stringbulider优化字符串拼接,降低GC。

  • 降低DrawCall,动态合批,静态合批。

  • 减少C#和lua的调用,尽量精简两者传递的参数结构。

  • 对于场景里频繁使用的对象或者数据结构做好资源复用或者利用对象池。

  • 使用IL2Cpp将C#编译到C++版本能极大的提高整体性能。

  • UI层好动静分离。

  • 层消隐距离技术(减少距离摄像机较远的小物体的数量)

    GPU优化小知识

  • 合理的规划好渲染顺序,降低OverDraw。

  • 采用LOD(多层次细节)

  • 采用遮挡剔除技术(摄像机前面的渲染,后面的隐藏)

  • 采用光照贴图LightMapping

  • Mesh合并:Mesh合并是用于将一些拥有Mesh网格的物体进行合并为一个网格,会减少DrawCalls,减轻GPU负担,同时CPU对于GPU进行渲染前的准备工作也会减少(性能消耗减少)

    Unity游戏开发客户端面经——性能优化(初级)_unity 脏标记-CSDN博客