zoukankan      html  css  js  c++  java
  • unity优化-内存(网上整理)

    内存优化
    内存的开销无外乎以下三大部分:1.资源内存占用;2.引擎模块自身内存占用;3.托管堆内存占用。
    在一个较为复杂的大中型项目中,资源的内存占用往往占据了总体内存的70%以上。因此,资源使用是否恰当直接决定了项目的内存占用情况。一般来说,一款游戏项目的资源主要可分为如下几种:纹理(Texture)、网格(Mesh)、动画片段(AnimationClip)、音频片段(AudioClip)、材质(Material)、着色器(Shader)、字体资源(Font)以及文本资源(Text Asset)等等。其中,纹理、网格、动画片段和音频片段则是最容易造成较大内存开销的资源。
    一、纹理:
    纹理资源可以说是几乎所有游戏项目中占据最大内存开销的资源。

    1、纹理格式
    纹理不仅影响着纹理的内存占用,同时还决定了纹理的加载效率。根据硬件的种类选择硬件支持的纹理格式,比如Android平台的ETC、iOS平台的PVRTC、Windows PC上的DXT等等。
    2、纹理尺寸
    纹理尺寸越大,则内存占用越大。尽可能的降低纹理尺寸,如果512*512对于显示效果够了,则不要使用1024*1024
    3、Mipmap功能
    Mipmap旨在有效降低渲染带宽的压力,提升游戏的渲染效率。但是,开启Mipmap会将纹理内存提升1.33倍。
    可以在3d场景模型和角色开启,在UI上关闭
    4、Read$Write
    开启该选项将会使纹理内存增大一倍。默认是关闭,但是有时候会开启,需要注意

    二、网格
    Normal、Color和Tangent
    Mesh资源的数据中经常会含有大量的Color数据、Normal数据和Tangent数据。这些数据的存在将大幅度增加Mesh资源的文件体积和内存占用。其中,Color数据和Normal数据主要为3DMax、Maya等建模软件导出时设置所生成,而Tangent一般为导入引擎时生成。

    更为麻烦的是,如果项目对Mesh进行Draw Call Batching操作的话,那么将很有可能进一步增大总体内存的占用。比如,100个Mesh进行拼合,其中99个Mesh均没有Color、Tangent等属性,剩下一个则包含有Color、Normal和Tangent属性,那么Mesh拼合后,CombinedMesh中将为每个Mesh来添加上此三个顶点属性,进而造成很大的内存开销。正因如此,我们在UWA测评报告中为每个Mesh展示了其Normal、Color和Tangent属性的具体使用情况,研发团队可以直接针对每种属性进行排序查看,直接定位出现冗余数据的资源。
    一般来说这些数据主要为Shader所用,来生成较为酷炫的效果。所以,建议研发团队针对项目中的网格资源进行详细检测,查看该模型的渲染Shader中是否需要这些数据进行渲染。

    三、动画片段

    我们之前做的是主城动作和战斗动作区分,因为主城只是用到了idle、run等几个动作,这样在主城的时候动作文件就会小很多。

    四、音频片段

    根据不同播放状态选择不同的Load Type类型

    五、粒子

    每个粒子在一开始的时候分L1/L2/L3,根据不同手机性能显示不同粒子效果。

    六、引擎模块自身占用

    引擎自身中存在内存开销的部分纷繁复杂,可以说是由巨量的“微小”内存所累积起来的,比如GameObject及其各种Component(最大量的Component应该算是Transform了)、ParticleSystem、MonoScript以及各种各样的模块Manager(SceneManager、CanvasManager、PersistentManager等)...

    七、修改分辨率

    通过降低分辨率来提高游戏运行效率

    八、合并骨骼

  • 相关阅读:
    windows修改环境变量的工具—Rapid Environment Editor
    JS 实现文件夹目录选择
    nginx 反向代理
    centOS7安装nginx及nginx配置
    yum安装时出现:Cannot retrieve metalink for repository: epel. Please verify its path and try again
    关于 PGP 加密与签名相关整理
    使用flink和kafka实现端到端的Exactly Once语义
    基于php的Http请求类封装
    Golang获取客户端IP
    Golang生成唯一的GUID
  • 原文地址:https://www.cnblogs.com/wangle/p/12173823.html
Copyright © 2011-2022 走看看