drawcall影响的是CPU的效率,而且也是最知名的一个优化点。对DrawCall的优化,主要就是为了尽量解放CPU在调用图形接口上的开销。所以针对drawcall我们主要的思路就是每个物体尽量减少渲染次数,多个物体最好一起渲染。一个Drawcall是每次引擎准备数据并通知GPU的过程。过程是:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置、法线、UV等),索引(顶点如何组成三角形),变换(就是物体的位置、旋转、缩放、以及摄像机位置等),相关光源,纹理,渲染方式(由材质/Shader决定)等数据准备好,然后通知图形API——或者就简单地看作是通知GPU——开始绘制,GPU基于这些数据,经过一系列运算,在屏幕上画出成千上万的三角形,最终构成一幅图像。影响CPU性能主要有一下几个方面:DrawCalls,物理组件,GC,代码质量。》DrawCalls 优化方法:使用Draw Call Batching,也就是描绘调用批处理。 分为静态批处理和动态批处理。动态批处理机制是引擎自动进行的,无需像静态批处理那样手动设置static。如果scale不同,竟然也不会去做批处理优化。静态批处理来说,好消息是自由度很高,限制很少,坏消息是可能会占用更多的内存,而且经过静态批处理后的所有物体都不可以再移动了。通过把纹理打包成图集来尽量减少材质的使用.尽量少的使用反光啦,阴影之类的,这些会使物体多次渲染。》物理组件(Physics) 优化方法设置一个合适的Fixed Timestep。不要使用网碰撞器(mesh collider);从性能优化的角度考虑,物理组件能少用还是少用为好。》GC(GC用来处理内存,但是由CPU来控制)》代码质量不要调用GetComponent,保存成成员引用;使用OnBecameVisible()和OnBecameVisible(),来控制物体的update()函数的执行以减少开销。使用内建的数组,比如用Vector3.zero而不是new Vector(0, 0, 0);对于方法的参数的优化:善于使用ref关键字。优化数学计算。比如,如果可以避免使用浮点型(float),尽量使用整形(int),尽量少用复杂的数学函数比如 Sin 和 Cos 等等。参考:【Unity技巧】Unity中的优化技术深入浅出聊优化:从Draw Calls到GC
推荐整理分享【Unity】CPU优化(unity gpu优化),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:unity优化性能,unity update优化,unityui优化,unity怎么优化提高帧率,unity update优化,unityui优化,unityui优化,unity优化性能,内容如对您有帮助,希望把文章链接给更多的朋友!
[置顶] u3d 巧用 CaptureScreenshot捕捉游戏画面 孙广东.4.游戏中测试人员在测试的时候,我们很希望能他们捕捉到当时的问题瞬间,而不是简单的用语言描述。账号Unity提供了这个游戏截屏的功能
Unity——网页获取视频文件播放,获取图片更换纹理 //确保这两个组件已经添加@scriptRequireComponent(GUITexture)@scriptRequireComponent(AudioSource)varurl=
AssetBundle机制相关资料收集 本文转载于