Unity性能调优学习总结(1)

1.Assets

游戏制作涉及处理大量不同类型的资源,例如纹理、网格、动画、音频等,本章提供资源的一些调优知识,包括各种资源的设置等。

1.1 纹理

图像数据是纹理的来源,是游戏制作中不可或缺的一部分,而它消耗的内存也比较大,所以必须进行一些适当的设置。

1.1.1 导入设置

下面是Unity中纹理的导入设置

1.1.2 读/写
默认情况下禁用此选项。如果禁用,纹理仅在GPU内存中扩展。如果启用,它不仅会复制到GPU内存,还会复制到主内存,从而使消耗加倍。因此,如果不使用Texture.GetPixel、Texture.SetPixel等API而仅使用Shader来访问纹理,直接禁用它们。
另外,对于运行时生成的纹理,将makeNoLongerReadable设置为true,以免复制到主内存
texture2D.Apply(updateMipmaps,makeNoLongerReadable:true);

由于将纹理从GPU内存传输到主内存是非常耗时的,因此如果它们是可读的,则可以通过将纹理部署到两者中来提高性能。

1.1.3 生成Mip贴图

启用Mip映射设置将纹理内存使用增加约1.3倍。此设置通常用于3D对象,以减少远处对象的抖动和纹理转移。这对于2D精灵和UI图像基本上是不必要的,所以应该禁用它。

1.1.4 压缩设置

参考资料:[Unity优化]图片压缩格式 https://zhuanlan.zhihu.com/p/457822156

践中, 像大多是作 为压缩 数据使用的。 压缩是通 过设计 数据的方法来 少数据量的 程。例如,假 五个 相同 色的 像素彼此相邻 种情况下,每个像素 如果你有一个颜 色的信息和一排有 五个 信息,而不是 五个 色信息,那么 信息量就会减 少。

践中,有很 多更复 压缩 方法。 作为 一个具体的例子,我 ASTC ,一个 典型的移 动压缩 格式。 ASTC6x6 格式,一个 1024x1024 理被从 4 兆字 节压缩 到大 0.46 兆字 话说 ,其 果是 压缩不到 八分之一 的容量, 就体现 压缩 的重要性。

纹理应该被压缩,除非有特定的原因不被压缩。如果在项目中发现了未压缩的纹理,这可能是人为错误或缺乏规则。请尽快检查一下。我们建议使用文本导入器来自动化这些压缩设置,以避免人为错误。

using UnityEditor;

public class ImporterExample : AssetPostprocessor
{
    private void OnPreprocessTexture()
    {
        var importer = assetImporter as TextureImporter;
        // 读取/写出设置等。
        importer.isReadable = false;

        var settings = new TextureImporterPlatformSettings();

        //Android = "Android", PC = "Standalone
        settings.name = "iPhone";
        settings.overridden = true;
        settings.textureCompression = TextureImporterCompression.Compressed;

        // 指定压缩格式
        settings.format = TextureImporterFormat.ASTC_6x6;
        importer.SetPlatformTextureSettings(settings);
    }
}

并非所有的纹理都需要使用相同的压缩格式。例如,在UI图像中,具有整体层次的图像往往由于压缩而显示出明显的质量损失。在这种情况下,建议只为一些目标图像设置一个较低的压缩比。另一方面,对于3D模型等纹理,很难看到质量损失,所以最好找到一个合适的设置,如高压缩比

推荐android使用ETC2, ios使用ASTC,或者PVRTC ,PC使用DXT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值