性能优化-资源修改

版本记录

日期版本说明作者
2019-11-20 0.1 文档初始版本 李俊

优先阅读

buildin 资源查找

  1. 抽取1份内置资源,放入工程
  2. 找到所有使用内置资源的地方,改成引用工程里放置的资源 FindBuildinResources.cs

standard材质球

  1. 遍历所有材质球,发现材质球上使用的shader是standard的,罗列出来
  2. 遍历所有fbx, 找到所有导入设置里,把ondemand都设置成红片材质球,参考代码:
 string assetPath = AssetDatabase.GetAssetPath(model);
        ModelImporter importer = AssetImporter.GetAtPath(assetPath) as ModelImporter;

        if (null == importer)
        {
            Debug.LogError("importer is null");
            return;
        }

        var renders = model.GetComponentsInChildren<Renderer>();
        var keys = new Dictionary<string, bool>();
        foreach (var render in renders)
        {
            var mat = render.sharedMaterial;
            if (mat != null && !keys.ContainsKey(mat.name)&&mat.shader.name.Contains("Standard"))
                keys.Add(mat.name, true);
        }
        importer.importMaterials = true;
        if (keys.Count > 0 || !importer.importMaterials|| importer.materialLocation != ModelImporterMaterialLocation.InPrefab)
        {
            var kind = typeof(UnityEngine.Material);
            foreach (var it in keys)
            {
                var id = new AssetImporter.SourceAssetIdentifier();
                id.name = it.Key;
                id.type = kind;
                importer.RemoveRemap(id);
                importer.AddRemap(id, tmpmat);
            }
            importer.materialLocation = ModelImporterMaterialLocation.InPrefab;
            importer.SaveAndReimport();
        }

image

划线处全部改成使用红片材质球 红片材质球是一个公用的材质球,使用internalerrorshader
3. 检测含有顶点数量为0的模型

提取动画文件(低优先级)

从fbx中提取动画文件,生成.anim文件,包体和加载都有微小的提升

AnimationClip src = AssetDatabase.LoadAssetAtPath<AnimationClip>(fbx);
AnimationClip temp = new AnimationClip();
EditorUtility.CopySerialized(src, temp);
CreateDirectory(target);
AssetDatabase.CreateAsset(temp, target);

清理材质球

清理材质球上多余的引用(ta已经有工具了)

ui

rawimage冗余问题

rawimage使用图集里的散图,会导致散图多余1份。rawimage只用于加载rt。
1.检测所有ui prefab,rawimage上不能设置图片
2.ui rawimage widget只能加载rt

ui prefab和图集相互引用

遍历所有ui prefab,获取其引用的图集,去除common图集后,如果引用的图集个数>=2, 即为有问题的ui prefab

图集超过尺寸

除了common图集外,超过1024*1024即为有问题的图集

posted on 2020-01-07 14:39  marcher  阅读(509)  评论(0编辑  收藏  举报

导航