性能优化-资源修改

版本记录

日期 版本 说明 作者
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即为有问题的图集

猜你喜欢

转载自www.cnblogs.com/marcher/p/12161433.html