Unity内存管理指南 - 常见的资源规则 翻译自官方博客

常见的资源规则

纹理Texture

关闭read/write enabled的标志

Read/Write enabled标志导致Texture会在内存中存在两份资源:一份在GPU,一份在GPU寻址空间【因为在大部分平台,从GPU内存读取非常缓慢。从GPU内存读取纹理资源到临时缓冲区非常不划算】。在Unity中,这个选项默认被关闭,但是有可能被意外开启。

Read/Write enabled属性被打开只有在Shader外操作纹理数据才有意义(例如Texture.GetPixel和Texture.SetPixel等)所以应当尽可能避免开启。

尽可能关闭Mipmaps

如果对象相对于Camera的Z深度不变,最好关闭mipmaps可以节省大概1/3的内存。如果对象的Z深度值会变化,关闭mipmaps可能导致GPU的取样效果比较差。

通常来讲,UI纹理和在屏幕上是固定大小的纹理资源通过可以关闭掉mipmaps选项。

压缩所有的纹理

对于目标平台使用合理的纹理压缩格式可以节省内存资源。

如果目标平台的纹理压缩格式设置的不合理,Unity加载纹理资源之后会对纹理资源重新解压,会消耗大量CPU时间和内存资源。这对于Android设备很常见,通常是因为不同的芯片级支持不同的纹理格式,差异太大,难以统一。

建立纹理限制条件

虽然这个很简单,但是通常很容易忘记重新调整纹理的大小,或者不小心改变了导入设置中的纹理大小。最好是通过代码确定不同类型的纹理资源是否满足了设定的规则。

对于许多移动应用程序,2048x2048或1024x1024对于纹理地图集是足够的,512x512对于应用于3D模型的纹理是足够的。

模型Model

关闭Read/Write enabled的标志

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值