Unity 3D 游戏优化

作者: 我家菇凉 | 来源:发表于2019-11-29 08:52 被阅读0次

Unity优化是一个很大的概念,我们优化时需要注意三个方面:CPU优化,GPU优化,内存优化.

CPU方面的优化:

(1) 减少DrawCall.

(2) 物理组件(Physics).

(3) 减少GC(垃圾回收)次数.

(4) 脚本的代码质量.

一,对DrawCall的优化

1、什么是DrawCall ?

答:Draw Call就是CPU调用图形编程接口,比如DirectX或OpenGL,来命令GPU进行渲染的操作。

2、 如何减少DrawCall ?

答: 思路就是每个物体尽量减少渲染次数,多个物体最好一起渲染。所以有三个方案:

(1)使用批处理,Unity在运行时将物体合并一次渲染。这里分为动态批处理和静态批处理。

(2)通过把文理打包成图集尽量减少材质的使用。

(3)尽量减少反光,阴影之类的效果,因为那会使物体多次渲染。

静态批处理就是将没有生命的不同物体设置为Static。

动态批处理是引擎自动进行的,例如动态实例化Prefab(预制体)如果动态物体共享相同的材质,引擎会自动批处理。动态批处理有很大限制,网格物体顶点数不能超过900。

二,对物理组件的优化

1、设置一个合适的FixedTimestep。

2、尽量不要使用网格碰撞器,占用CPU计算。

三,处理GC的优化

虽然GC是用来处理内存的,但是的确会增加对CPU的开销,因此对于GC的优化目标就是尽量减少GC的触发。

GC是何时触发的?

1、堆的内存不足时,自动调用GC。

2、编程人员手动调用GC。

GC的优化说白了就是代码的优化,主要注意一下5点:

(1)字符串连接的处理。。

(2)尽量不要使用foreach,减少迭代器产生。

(3)不要直接访问gameObject的tag属性。换成"if(obj.CompareTag("Player"))"

(4)使用对象池,以实现空间的重复利用。

(5)不要使用LinQ。

四,对代码质量的优化

(1)Transfrom组件获取一次就保留引用,而不是每次都获取。

(2)不用频繁的GetComponent

(3)使用内建数组,如Vector3.zero而不是new Vector(0,0,0)。

(4)对方法的参数优化,善于使用ref关键字。

GPU方面的优化:

GPU瓶颈:

(1)填充率,可以简单理解为图形处理单元每秒渲染的像素数量

(2)像素的复杂度,比如动态阴影、光照、复杂的shader等

(3)几何体的复杂度(顶点数量)

(4)GPU的显存带宽

影响GPU性能的无非就两大方面,一方面顶点数量过多,像素计算过于复杂;另一方面就是GPU的显存带宽。优化方法:

(1)减少顶点数量,简化计算复杂度。

(2)压缩图片,以适应显存带宽。

一、减少顶点数量,简化计算复杂度。

(1)保持材质的数目尽可能少,更容易批处理。

(2)使用纹理图集,代替小贴图。

(3)如果使用了纹理图集和共享材质,使用Renderer.sharedMaterial来代替Renderer.material。

(4)使用光照贴图(lightmap)而非实时灯光。

(5)使用LOD(多层次细节),好处就是那些离得远看不清的细节可以忽略。

(6)遮挡剔除

(7)使用mobile版的shader,因为简单。

二、压缩图片,减小显存带宽压力。

(1)OpenGL ES2.0使用ETC1格式压缩等,在打包设置里有。

(2)使用MipMap,小图集

内存方面的优化:

(1)Unity3D的内部内存

(2)Mono的托管内存

(3)若干自己引入或第三方DLL所需的内存(非重点)

相关文章

  • [unity3d源码] Unity 3D 《farm busin

    Unity 3D 《farm business》农场模拟经营游戏源码下载 1、Unity 3D 《farm bus...

  • Unity 3D 创建项目

    Unity 3D 下载 要安装 Unity 3D 游戏引擎的最新版,可以访问 Unity 官方网站 https:/...

  • Unity 3D 游戏优化

    Unity优化是一个很大的概念,我们优化时需要注意三个方面:CPU优化,GPU优化,内存优化. CPU方面的优化:...

  • 批处理介绍

    这是我在《Unity游戏优化 (第2版)》看的,记录一下~ 批处理是啥?一般出现在3D图形和游戏中 大概意思就是:...

  • (开源)独立手机游戏「推箱子 3D」

    游戏名:「推箱子 3D」「Sokoban 3D」开发引擎:Unity游戏简介:推箱子游戏是一种老少皆宜的益智游戏,...

  • 是时候该了解下Unity3D了

    现在的 Unity 已经发展到了 Unity 5,使用 Unity 可以创建 2D 或 3D 游戏、建筑格式化、实...

  • unity3d培训班去哪好

    u3d是unity 3D的简称,u3d游戏开发去哪好? Unity对游戏行业的贡献是无可非议的,Unity发展角度...

  • Unity 3D 界面布局视图介绍

    Unity 3D 拥有强大的编辑界面,游戏开发者在创建游戏过程中可以通过可视化的编辑界面创建游戏。 Unity 3...

  • Unity大魔王私藏的开发2D游戏的常用插件合集

    Unity以开发3D游戏见长,早期版本的Unity在开发2D游戏时不慎方便,因此Asset Store出现了很多2...

  • 字符串优化

    参考文章:Unity 游戏的 string interning 优化C#的字符串优化-String.Intern、...

网友评论

    本文标题:Unity 3D 游戏优化

    本文链接:https://www.haomeiwen.com/subject/bnrwwctx.html