Unity手游简单优化

1 资源方面

1.1 动态物体

控制面片数量(300-2000)

控制Skinned Mesh Render为1个

控制材质数量为1-3个

控制骨骼数量<30根

1.2 静态物体

控制网格顶点数<500个

在属性面板中将其标为static(Unity 会用Static Batching对静态物体进行优化)

Animation组件如果不需要尽量去除

1.3 自带地形

控制地形分辨率(地形高度图尺寸)<257

地形中混合纹理数目尽量不超过4个

1.4 美术资源

纹理贴图尽量采取压缩格式

纹理尺寸够用就行,尽量小于1024

建议使用MipMap 提高渲染效率


2 引擎方面

控制Important灯光个数,1/0;光源设置:Pixel Light Count为1-2个



设置合理的剪切平面,可根据不同场景进行修改


粒子特效:

屏幕上的粒子总数建议小于200个

每个粒子发射器所发射的粒子总数建议不超过50个

粒子的Size值尽量小

对于非常小的粒子,在其粒子纹理中可以去除Alpha通道


物理引擎:

碰撞体尽可能使用Sphere和Box,避免使用Mesh


渲染优化:

尽可能避免使用Alpha Test和Alpha Blend

可能的话,使用Alpha Blend替代Alpha Test


DrawCall Batching

Unity在渲染时,可以将一些物体合并,从而使用一个DrawCall来渲染他们。

理论上讲,Unity Batching的物体越多,渲染性能越好。


Static Batching

针对静态物体进行Batching


Dynamic Batching

对于相同材质的动态物体,Unity会自动对其进行Batching,缩放物体无法与非缩放物体进行Batch


纹理合并

Texture Patching


遮挡剔除

Occlusion Culling


3 代码方面

对于有些函数可以每隔几帧执行一次

如在Update函数中:

if(Time.frameCount%6==0)
<span style="white-space:pre">	</span>DoSomething();


通过使用InvokeRepeating函数实现定时重复调用

如启动0.5秒后每隔1秒执行一次

InvokeRepeating("DoSomething", 0.5f, 1.0f);

尽量少使用临时变量,特别是在Updata等实时调用的函数中。


定时进行垃圾回收

如在Update函数中:

if(Time.frameCount%50==0)
{
	System.GC.Collection();
}

优化数学运算

少用float,而用int

用乘法代替除法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值