如何优化内存?Unity中的内存种类;冯乐乐的总结的优化技术。
来源:互联网 发布:淘宝三个月前订单不见 编辑:程序博客网 时间:2024/06/08 10:20
1 。 有很多种方式
例如
1.压缩自带类库;
2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;
3.释放AssetBundle占用的资源;
4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;
5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。
Unity中的内存种类
实际上Unity游戏使用的内存一共有三种:程序代码、托管堆(Managed Heap)以及本机堆(Native Heap)。
优化程序代码的内存占用
托管堆,
托管”的意思是Mono“应该”自动地改变堆的大小来适应你所需要的内存,并且定时地使用垃圾回收(Garbage Collect)来释放已经不需要的内存。
首先需要明确,托管堆中存储的是你在你的代码中申请的内存。
你要做的就是在尽可能早的时间将不需要的引用去除掉,这样回收机制才能正确地把不需要的内存清理出来。但是需要注意在内存清理时有可能造成游戏的短时间卡顿,这将会很影响游戏体验,因此如果有大量的内存回收工作要进行的话,需要尽量选择合适的时间。
本机堆的优化
当关卡呈现在用户面前的时候,所有Unity编辑器能认识的本关卡的资源都已经被预先加入内存了,
因为移动设备能使用的资源始终非常有限。因此在面向移动设备游戏的制作时,尽量减少在Hierarchy对资源的直接引用,而是使用Resource.Load的方法,在需要的时候从硬盘中读取资源,在使用后用Resource.UnloadAsset()和Resources.UnloadUnusedAssets()尽快将其卸载掉。
尽量减少代码的耦合和对其他脚本的依赖是十分有必要的。如果确实无法避免这种情况,那应当手动地对这些不再使用的引用对象调用Destroy()或者将其设置为null。这样在垃圾回收的时候,这些内存将被认为已经无用而被回收。
三、冯乐乐的总结的优化技术。
有两种主要的计算资源:CPU(负责其中的帧率)和GPU(负责分辨率相关的一些东西)。
总结起来的性能瓶颈在于以下四点:
1,在CPU方面:过多的DrawCalls;复杂的脚步或者物理模拟。
2,在顶点处理方面:过多的顶点;过多的逐像素计算。
3,在像素(Fragment)处理方面:过多的fragment, overdraws;过多的住像素计算。
4,在宽带方面:尺寸很大且未压缩的纹理;分辨率过高的framebuffer。
所以涉及到的优化技术有以下几点:
1,顶点优化方面:
A,优化几何体;(尽量减少模型中的三角形的数目,尽可能重用顶点)
B、使用LOD(Level of details)技术;
C、使用遮挡剔除(Occulusino culling)技术。
2, 像素优化方面:控制绘制顺序;警惕透明物体;减少实时关照。
3, CPU优化方面:减少DrawCalls。
4, 宽带优化:减少纹理大小,利用缩放。
- 如何优化内存?Unity中的内存种类;冯乐乐的总结的优化技术。
- Unity的内存优化
- Unity内存的优化
- Unity的内存优化
- unity内存优化总结
- unity内存优化总结
- 【Unity优化】内存优化
- [Unity 优化]内存优化
- 内存优化 和 性能优化 的总结
- 内存优化的一点总结
- Cocos2dx的内存优化总结
- Android内存的优化总结
- unity 的内存优化工具 Memory Profiler
- Unity匿名函数的堆内存优化
- Unity内存优化技术测试案例
- Unity内存优化(-)托管堆ManagedHeap的优化
- Unity性能优化(主要是内存的优化)
- unity内存优化心得-模型自动导入的Standard优化
- MySQL数据库主从(Master/Slave)同步安装与配置
- React事件代理
- Aggressive cows(二分查找最大化最小值)
- 日常整理
- 为什么需要使用并发编程?什么时候适合使用并发编程技术?
- 如何优化内存?Unity中的内存种类;冯乐乐的总结的优化技术。
- Android异步处理常用方法
- android 微信6.2.0 AndroidManifest.xml
- 限时抢购秒杀系统架构分析与实战
- yii2批量插入数据
- Hi3516A开发--以太网
- TextView长按复制实现方法小结
- mvc 控制器 json 格式
- Longest Substring Without Repeating Characters