【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 ,所以我们可以实现将物体进行分层,大物体层设置的可视距离大些,而小物体层可以设置地小些,另外,一些开销比较大的实体(如粒子系统)可以设置得更小些等等。
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 ,所以我们可以实现将物体进行分层,大物体层设置的可视距离大些,而小物体层可以设置地小些,另外,一些开销比较大的实体(如粒子系统)可以设置得更小些等等。
相关文章推荐
- 【unity优化一】性能检测工具
- 基于 Unity 的一种透明通道压缩处理
- 【Unity NGUI游戏开发之五】多分辨率下完美分布式协同开发
- UNITY_引擎_UGUI
- unity3D java c#交互
- Unity 5光源运作浅谈
- Unity 5.0 中酷炫的新动画功能
- 【Unity游戏开发之四】GameObject.Find()、Transform.Find查找隐藏对象
- Unity中的Snap Settings
- unity3d中的local和global
- Unity中的Transform Gizmo中的Pivot和Center
- unity3d引擎架构之Componet
- 安装ubuntu并切换到Gnome经典桌面
- 安装ubuntu并切换到Gnome经典桌面
- Unity3d实现画笔
- Unity-Attribute
- Unity Colliders
- unity3d android开发初体验——远程安装调试篇
- Unity5新的AssetBundle系统使用心得
- unity-Animation