|
这是我的一些总结:
- -试试把gameobject 一个一个禁用,确定下什么最影响性能
- - stats 里面有多少个 Draw calls & 三角形 手机5000以下最好 注意FPS
- - 合并网格物体
- -Batched越高越好, 整合渲染,
- - 合并材质张数
- - 不要用网格碰撞.mesh collider 用了之后 面数多的模型或地形会巨卡无比 因为你每移动一步都会有碰撞判断
- - Unity对带动作的模型渲染消耗比较大,如果是静态的不带动作文件的模型渲染不会出现效率问题,但是要确保只绘制屏幕内的东西
- -将所有音频设置为MP3,在iphone中解码的时候最省资源。
- -灯光能不用就不用, 阴影用个面代替, 投射阴影和实时灯光,简直就是frameKller.
- - 模型尽量减少面. 这个和drawCall相辅相成. 我上个游戏满屏只有400面, drawCalls都干到快90了,还一样能跑到30帧在真机上. 当然没有复杂的运动是另个方面.
- -模型尽量不要分开, 比如我现在坦克游戏, 车身和履带是分开的, 分别都是一次drawCalls,(打英文太烦了,以后drawCall 翻译为"绘图调用") 做到一起,就是一次
- -unity3d自带的quality setting 质量优化设置
- -光照剔除优化 光照烘焙优化 建模中多边形数减少优化
- -内存池的核心思想就是在游戏进行中经常重复出现的物体不要用Instantiate和Destroy来生成和销毁(尤其在处理子弹的时候,会特别的卡),而是用GameObject.active = true/false来激活或者隐藏物体。
- -你可以在游戏初始化的时候用Instantiate来生成所有你需要的物体,然后隐藏(GameObject.active = false),在需要的时候再激活他们(GameObject.active = true)就行了。
- -不要用ragdoll
- -最终输出的时候,在unity - edit - project setting - player 里, 把 other settings - script call optimization 改成 快速, 但没有例外. fast but no exceptions
- -注意音乐设置,暂时没用过
- -unity - edit - project setting - time 里, 把 maximum allowed timestep 改成0.1
|
|