您的位置:首页 > 移动开发 > Unity3D

【unity优化二】零碎经验集合

2015-08-02 23:32 281 查看
1、闪退原因与处理

1)内存分配不足,例如IOS上C#代码通过AOT(Ahead of time)编译,而不是JIT(Just in time)。AOT实现反射机制需要预先分配一块内存存类的元数据,当过度使用泛型时导致类元数据过大,,预分配内存不够就闪退抛出

2)无限递归导致栈溢出闪退

3)程序逻辑出现两个空指针异常导致闪退

2、卡顿原因与处理

1)GC Collect垃圾回收

2)资源加载时机错:移动或战斗过程中才去加载和实例化资源(如:特效资源)导致顿卡,建议预加载。

3)特效Shader太耗:建议顶点Shader中的乘法运算不超过3次,像素Shader中乘法运算不超过2次,尽量避免三角函数、幂函数等复杂数学运算。人物角色移动过程中烟雾特效太耗,移动过程中每走一步new一个烟雾,建议去掉这个特效。

4)UI主界面刷新逻辑:每秒刷新主界面的逻辑UIPanelMainCity.UpdateData() 中逻辑处理每次分配了2M的大数组,大数组分配会造成顿卡,通过Cache的方式优化掉改数组。

3、耗电和发热

4、摄像机

将远平面设置成合适的距离,远平面过大会将一些不必要的物体加入渲染,降低效率。

另外我们可以根据不同的物体来设置摄像机的远裁剪平面。Unity 提供了可以根据不同的 layer 来设置不同的 view distance ,所以我们可以实现将物体进行分层,大物体层设置的可视距离大些,而小物体层可以设置地小些,另外,一些开销比较大的实体(如粒子系统)可以设置得更小些等等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: