Unity性能优化

1、所有贴图的材质大小尽量使用4的倍数,以提高Unity的压缩率,减少文件大小。

2、多次重复出现的物体尽量使用同一个Prefab,以减少Mesh数量,从而减少工程大小。


Scene Optimization
1.post-processes all imported assets
2.strip out unused assets
3.print an overview of the used file size
4.optimizing texture size
5.optimizing mesh and animation size
6.tangents are used for normal-mapping.if you don't use normal-mapping,you probably don't need to store tangents in those meshes.This can be set in Tangent Space Generation drop down in Mesh Import Settings.
7.Normals are used for lighting. If you don't use realtime lighting on some of your meshes, you probably don't need to store normals in them.This can be set in Tangent Space Generation drop down in Mesh Import Settings.
8.reducing included dlls in the Players
9.Web Player Streaming.Tuning for Portals
10.Open Editor Log.Show file size


1.Load the menu first.
2.Make the first level be short and not use a lot of assets.f
3.There is no reason why all music must be availabe when the game starts.
4.Optimize your textures using their import settings.
5.Generally reduce the size of your web players.
6.Try to avoid Resources.Load.

1.如果没有必要每帧都处理,则可以每隔几帧处理一次。
2.定时重复调用可以使用InvokeRepeating函数实现。
3.少使用临时变量,特别是在Update、OnGUI等实施调用的函数中。
4.主动进行垃圾回收。System.GC.Collection();
5.优化数学运算,尽量避免使用float,而使用int,尽量少用复杂的数学函数。改除法为乘法
6.压缩Mesh,在不影响效果的前提下,最好打开Mesh Compression。
7.运行时尽量减少Tris和Draw Calls。 一般来说,要做到Tris 保持在 7.5k 以下,Draw Calls 保持在 35 以下。
8.如果可能,将GameObject上不必要的脚本disabled掉。
9.删除空的Update方法
10.尽可能不要在Update和FixedUpdate中使用搜索方法(例如GameObject.Find()),可以在Start方法里获得它。
11.不要使用SendMessage之类的方法,它比直接调用要慢许多,可以直接调用或通过C#的委托来实现。
12.最好使用确定的类型,不要使用动态类型。可以在脚本开头使用#pragmastrict来检查。
13.减少固定增量时间,Edit->Project Settings->Time来改变这个值。降低FixedUpdate函数被调用的频率以及物理引擎执行碰撞检测与刚体更新的频率。
14.减少GetComponent的调用。使用GetComponent或内置组件访问器会产生明显的开销。可以通过一次获取组件的引用来避免开销,并将该引用分配给一个变量。
15.避免分配内存
您应该避免分配新对象,除非你真的需要,因为他们不再在使用时,会增加垃圾回收系统的开销。您可以经常重复使用数组和其他对象,而不是分配新的数组或对象。这样做好处则是尽量减少垃圾的回收工作。同时,在某些可能的情况下,您也可以使用结构(struct)来代替类(class)。这是因为,结构变量主要存放在栈区而非堆区。因为栈的分配较快,并且不调用垃圾回收操作,所以当结构变量比较小时可以提升程序的运行性能。但是当结构体较大时,虽然它仍可避免分配/回收的开销,而它由于"传值"操作也会导致单独的开销,实际上它可能比等效对象类的效率还要低。
16.优化垃圾回收,如果堆比较小,则进行快速而频繁的垃圾回收。如果堆比较大,则进行缓慢且不频繁的垃圾回收
17.数组、集合类元素优先使用Array,其次是list。
18.Mesh尽可能结合,Material和Texture尽可能共用。一个Mesh建议使用的面数在1500-4000之间,一个mesh建议只使用一个material.
19.使用 Mip Maps 大約會多占用 33%的内存,但是可以大幅提升效能。
20.可以通过 纹理拼合 操作来将这两张纹理拼合成一张大的纹理。一旦纹理拼合在一起,你就可以使用这个单一材质来替代之前的两个材质了。
21.不要使用缩放尺度(scale)
22.将不重要的光源的RenderMode设置为Not important,以此来避免渲染方面的开销。
23.逐像素的动态光照将对每个受影响的像素增加显著的计算开销,并可能导致物体会被渲染多次。为了避免这种情况的发生,您应该避免对于任何单个物体都使用多个像素光照,并尽可能地使用方向光。需要注意的是像素光源是一个渲染模式(Render Mode)设置为重要(Important)的光源。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值