如何优化内存?Unity中的内存种类;冯乐乐的总结的优化技术
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, 宽带优化:减少纹理大小,利用缩放。
转自:https://blog.csdn.net/taotaoah/article/details/52484439
如何优化内存?Unity中的内存种类;冯乐乐的总结的优化技术相关推荐
- 【求知探新】Unity中ShaderLab内存优化
一.问题描述 从上图(进入战斗场景时的内存快照)可以看出,ShaderLab占用居然达到42MB,为什么Shader的占用那么高呢? 二.问题分析 由于当前项(ShaderLab)没有说明详细的Sha ...
- java 减少内存_java中减少内存占用小技巧
Java做的系统给人的印象是什么?占内存!说道这句话就会有N多人站出来为java辩护,并举出一堆的性能测试报告来证明这一点. 其实从理论上来讲java做的系统并不比其他语言开发出来的系统更占用内存,那 ...
- c语言函数申请内存,c中动态内存申请的函数
C语言中,内存管理是通过专门的函数来实现的. (1)malloc函数: 用于分配若干字节的内存空间,并返回一个指向该内存空间首地址的指针变量. 若系统不能提供足够的内存单元,将会返回一个NULL,空指 ...
- 关于Unity中坐标系的种类
坐标空间 1:物体空间: 3D物体自己的坐标空间 一般设计时几何体以中心为原点,人物以双脚为原点; 2: 世界空间: 3D物体在场景中的世界坐标, 整个游戏场景的空间; 3: 摄像机空间: 以观察摄像 ...
- Unity 3D中的内存管理与优化游戏运行性能的经验
Unity3D在内存占用上一直被人诟病,特别是对于面向移动设备的游戏开发,动辄内存占用飙上一两百兆,导致内存资源耗尽,从而被系统强退造成极差的体验.类似这种情况并不少见,但是绝大部分都是可以避免的.虽 ...
- ios开发中计算代码运算时间_理解Unity中的优化(二):内存
内存: 内存消耗是一个关键的性能指标,尤其是在内存资源有限的平台上,比如低端移动设备. 内存消耗分析: 在Unity中诊断内存问题,Unity介绍了一款开元的可视化内存分析工具--MemoryProf ...
- 【Unity】Unity 3D中的内存管理
本文欢迎转载,但烦请保留此行出处信息:http://www.onevcat.com/2012/11/memory-in-unity3d/ Unity3D在内存占用上一直被人诟病,特别是对于面向移动设备 ...
- 【Unity3D】中如何分配内存占用(解决内存占用过大问题)
最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个 ...
- 从内存溢出看Java 环境中的内存结构
作为有个java程序员,我想大家对下面出现的这几个场景并不陌生,倍感亲切,深恶痛绝,抓心挠肝,一定会回过头来问为什么为什么为什么会这样,嘿嘿,让我们看一下我们日常在开发过程中接触内存溢出的异常: Ex ...
- 【Android 内存优化】垃圾回收算法 ( 内存优化总结 | 常见的内存泄漏场景 | GC 算法 | 标记清除算法 | 复制算法 | 标记压缩算法 )
文章目录 一. 内存优化总结 二. 常见的内存泄漏场景 三. 内存回收算法 四. 标记-清除算法 ( mark-sweep ) 五. 复制算法 六. 标记-压缩算法 一. 内存优化总结 内存泄漏原理 ...
最新文章
- Img与background的区别
- python在人工智能应用锁_解读! Python在人工智能中的作用
- MpAndroidChart源码修改之饼状图添加标志线
- 链路追踪在ERP系统中的应用实践
- 在等待Jakarta EE时
- Java 8 Lambda表达式的函数式编程– Monads
- 将游戏成绩传到排名页面html,用野狗开发实时游戏排行榜
- kodi android 键盘,KODI按键映射,看IPTV按键设置
- 提高.NET编程水平的50个要点(转载)
- Android学习笔记---SQLite介绍,以及使用Sqlite,进行数据库的创建,完成数据添删改查的理解
- 第二次团队冲刺第二天
- 做运动(Dijkstra+并查集+MST)
- 中的live_张杰两首歌曲连唱彰显LIVE实力 青春演说温暖人心
- Swift学习笔记8--Optional Chaining
- SAPI V1.4发布,轻巧的API输出测试组件
- PLSQL Developer安装破解 ,以及连接配置
- 用SecurAble检测cpu是否支持Intel VT虚拟化技术的LOCKED ON,LOCKED OFF,YES,NO使用说明
- 【筹码分析】改版通达信PAVE筹码引力分析个股强势区和走势
- 如何做一名优秀的程序员?
- 日语基础复习 Day 16
热门文章
- Python3爬虫新手实践及代码、经验分享
- Paypal无限转圈
- SAP根据采购申请,采购入库
- mcgs rtu方式通讯两台施耐德ATV312变频器示例 ,通讯实现触摸屏控制监控变频器,中间不需要plc
- 登录Windows Server时提示”user profile service服务器登录失败 无法加载用户配置“的解决方法
- 电商 秒杀系统 设计思路和实现方法
- “驱动程序在 \Device\Harddisk0\D 上检测到控制器错误”的根本解决办法!
- 计算机里的本地安全策略在哪找,本地安全策略哪里去了?
- 用matlab实现快速傅里叶变换的源程序,matlab快速傅里叶变换(三个matlab程序介绍)...
- freeredius3.0 mysql_edius插件下载|Edius9滤镜和转场插件Vitascene+蓝宝石插件GenArts Sapphire3.0.257 官方版_ - 极光下载站...