美文网首页
Unity游戏客户端内存控制经验list

Unity游戏客户端内存控制经验list

作者: 小星星幼儿园 | 来源:发表于2017-07-20 13:27 被阅读0次

    目前厂商们比较统一的认可标准是内存控制在300M左右。内存控制关系到整个程序架构的设计和很多细节的调整和优化。

    1. 贴图的多次加载

    1.1 在加载贴图方式进行优化,一个贴图只加载一份,把多个prefab引用的贴图进行预先加载(这样这个贴图在内存中就会只占一份内存)
    1.2 在上述情况下,静态创建(场景的一部分)的东西还是会多占一份内存,贴图的使用上要分开
    1.3 游戏一启动就引用的资源会被加载两份(原因未知)

    2. 贴图的压缩

    2.1 尽量对贴图进行压缩。保证是标准尺寸,才可以压缩
    2.2 因为ios对压缩的支持有限,要把贴图分为方形icon和背景图类(4bits压缩),icon类(16bit压缩)、渐变色强的icon类(不压缩或者压缩尺寸)
    2.3 尺寸和压缩方式细调
    2.4 贴图排列工具在图集中自动排列图元,采用排料算法

    3. 音效的加载方式

    3.1 在内存中以压缩方式存储,大大降低audiomanger
    3.2 进行适当质量的降低
    3.3 音效设置为单通道,分别使用mp3,ogg格式

    4. 动态加卸载所有资源、合理分ab包

    4.1 按卡牌划分卡牌相关prefab的ab打包(贴图、模型、动作、音效;每个卡牌打为一个ab)、卡牌的图标独立打为一个包(图标使用频率更频繁)
    4.2 按技能划分技能相关prefab的ab打包
    4.3 UI的prefab按界面分类打ab包
    4.4 从ab创建资源后,ab实际是没有卸载的,但是ab内的东西并没有保证完全创建完成,暂时没有做完全的卸载
    4.5 需要预先加载的common包内是一些动态使用的资源,无法靠ab包依赖关系加载

    5. 对内存中的资源进行定期清理

    5.1 随着游戏的进行,内存中的东西会越来越多,可以在切换场景时,进行对资源的清空处理
    5.2 保证lua程序中的数据在合适的时机清除

    6. 阴影贴图尺寸问题

    在场景中找到会产生投影的灯,设置它使用QualitySetting的Resolution,然后Resolution设置到一个合理的尺寸

    7. 字体文件问题

    使用的字体库文件只保留常用字

    8. Android不支持部分压缩格式如DXT

    如果选了DXT格式,在Android手机上图片是原尺寸的

    9. 模型适当压缩,动作尽量压缩
    10. 对mipmap进行适当的开关,UI一般关闭,模型打开。

    mipmaps渲染模式可以查看mipmap的使用情况

    11. 贴图不要打开read/write,会造成同时占用内存和显存
    12. 非标准尺寸压缩,在高级模式下拉成标准尺寸,然后再选压缩

    相关文章

      网友评论

          本文标题:Unity游戏客户端内存控制经验list

          本文链接:https://www.haomeiwen.com/subject/hmidkxtx.html