unity 优化

推荐

UGUI相关

https://blog.csdn.net/a133900029/article/details/80388072

https://www.jianshu.com/p/e427a38e91c3

**https://blog.csdn.net/a133900029/article/details/80388072

这个推荐https://blog.csdn.net/Terie/article/details/103962439

图片格式

https://www.jianshu.com/p/bec1a7514b08

1.静态合批的原理是什么?会造成开销么?如果会,开销有哪些?

https://www.jianshu.com/p/a3087f31ff88

2.动态合批的条件是什么?会造成开销么?如果会,开销有哪些?

https://www.jianshu.com/p/a3087f31ff88

3.GPU Instancing 合批的条件是什么?

https://www.jianshu.com/p/1492611bb432

4.Drawcall是什么?说说如何降低Drawcall?

  https://www.cnblogs.com/123ing/p/4000082.html

5.SetPass Call 是什么?

https://blog.csdn.net/wei_yuan_2012/article/details/88677172

6.Android/iOS平台的纹理格式分别设置成什么?有什么好处?

7.谈谈做游戏优化的一般思路是什么?

9.谈谈Unity 游戏引擎里面耗性能的主要有哪些地方?

10.Unity是如何绘制3D物体的?

11.Unity 减少GC开销,写代码要注意哪些方面?

五十:如何优化内存?

有很多种方式,例如

1.压缩自带类库;

2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;

3.释放AssetBundle占用的资源;

4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;

5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。

6.代码中少产生临时变量

六十五:什么叫动态合批?跟静态合批有什么区别?

如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理。动态批处理操作是自动完成的,并不需要你进行额外的操作。

区别:动态批处理一切都是自动的,不需要做任何操作,而且物体是可以移动的,但是限制很多。静态批处理:自由度很高,限制很少,缺点可能会占用更多的内存,而且经过静态批处理后的所有物体都不可以再移动了。

八十三:UNITY3d在移动设备上的一些优化资源的方法

1.使用assetbundle,实现资源分离和共享,将内存控制到200m之内,同时也可以实现资源的在线更新

2.顶点数对渲染无论是cpu还是gpu都是压力最大的贡献者,降低顶点数到8万以下,fps稳定到了30帧左右

3.只使用一盏动态光,不是用阴影,不使用光照探头

粒子系统是cpu上的大头

4.剪裁粒子系统

5.合并同时出现的粒子系统

6.自己实现轻量级的粒子系统

animator也是一个效率奇差的地方

7.把不需要跟骨骼动画和动作过渡的地方全部使用animation,控制骨骼数量在30根以下

8.animator出视野不更新

9.删除无意义的animator

10.animator的初始化很耗时(粒子上能不能尽量不用animator)

11.除主角外都不要跟骨骼运动apply root motion

12.绝对禁止掉那些不带刚体带包围盒的物体(static collider )运动

NUGI的代码效率很差,基本上runtime的时候对cpu的贡献和render不相上下

13每帧递归的计算finalalpha改为只有初始化和变动时计算

14去掉法线计算

15不要每帧计算viewsize 和windowsize

16filldrawcall时构建顶点缓存使用array.copy

17.代码剪裁:使用strip level ,使用.net2.0 subset

18.尽量减少smooth group

19.给美术定一个严格的经过科学验证的美术标准,并在U3D里面配以相应的检查

UNITY3d在移动设备上的一些优化资源的方法

1.使用assetbundle,实现资源分离和共享,将内存控制到200m之内,同时也可以实现资源的在线更新

2.顶点数对渲染无论是cpu还是gpu都是压力最大的贡献者,降低顶点数到8万以下,fps稳定到了30帧左右

3.只使用一盏动态光,不是用阴影,不使用光照探头 粒子系统是cpu上的大头

4.剪裁粒子系统

5.合并同时出现的粒子系统

6.自己实现轻量级的粒子系统 animator也是一个效率奇差的地方

7.把不需要跟骨骼动画和动作过渡的地方全部使用animation,控制骨骼数量在30根以下

8.animator出视野不更新

9.删除无意义的animator

10.animator的初始化很耗时(粒子上能不能尽量不用animator)

11.除主角外都不要跟骨骼运动apply root motion

12.绝对禁止掉那些不带刚体带包围盒的物体(static collider )运动 NUGI的代码效率很差,基本上runtime的时候对cpu的贡献和render不相上下

13每帧递归的计算finalalpha改为只有初始化和变动时计算

14去掉法线计算 15不要每帧计算viewsize 和windowsize 16filldrawcall时构建顶点缓存使用array.copy

17.代码剪裁:使用strip level ,使用.net2.0 subset

18.尽量减少smooth group

19.给美术定一个严格的经过科学验证的美术标准,并在U3D里面配以相应的检查工具。

 2.15.列举减小包体的方法 1. 纹理格式的压缩(重要) 本次减小包体主要改变了纹理的格式:其实是纹理的压缩算法。 主要采用了以下方式减小包体: a.采用RGB Crunched DXT1,RGBA Crunched DXT5的纹理格式,此压缩方式会比RGB Compressed DXT1和RGBA Crunched DXT5小一半还要多 官方未推荐在android平台上使用, 但是在Oppo机型上测试没有问题,其他机型暂时没有测试,采用 RGB Crunched DXT要求图片为2的n次幂 b.去掉纹理格式的mip选项,mipmap会生成多张小图来避免缩小图片时没必要的GPU采样消耗。但使用mipmap的图片会比不使用的图片多占用约三分之一的外存和内存。 2.模型文件的压缩, 模型文件(玩家模型除外)下仅选择了压缩类型为中度,原来工程关闭了模型压缩选项 压缩前mesh占用为 35.4M 压缩后为 中 25.8 M 高 24.7M 现在包体未压缩的模型: 仅玩家模型 4.声音文件的压缩 声音文件主要压缩要点有两个: a.改变声音文件的比特率,原工程采用了声音的Persever选项,现在的声音选择了优化选项 更改前声音 18.5M 更改后 11.7M b.改变声音文件的压缩格式,目前测试采用Vorbis压缩格式声音文件最小 c.暂时没有去查不同文件压缩格式对声音文件的影响(以后补上) 5.场景的压缩(重要,新知识) 场景中静态物体对包体大小的影响 经测试打包时关卡的大小跟场景内静态物体的数量有很大关系,因此当打包时 关卡占用过大时, 减小游戏内静态物体的数量可以减小包体的大小,但是游戏内对静态批处理和Culling等自动化处理都会都是依据static标记进行的, 因此此方法减小包体,会对游戏的帧率有所影响。

41、手机发烫的主要原因? 答:手机CPU是一个高度集成的SOC芯片,它里面不单单集成了CPU中央芯片和GPU图形处理芯片,还有蓝、GPS、射频等一系列关键芯片模块,是智能手机芯片中集成度最高的芯片,模块在高速运作时都会散热出大量热量。通俗的说,手机处理器相当于同时集成了CPU和显卡模块,另外还包含了其他一些模块。熟悉电脑的朋友都知道,CPU和显卡都是发热大户,两者融合在一起,加上又是一个很小的芯片模块,发热量自然是最大的,这样就很好理解了。

 

过度绘制

posted @ 2020-10-15 10:42  Elijah_j  阅读(169)  评论(0编辑  收藏  举报