版本记录
2019-11-20 | 0.1 | 文档初始版本 | 李俊 |
buildin 资源查找
- 抽取1份内置资源,放入工程
- 找到所有使用内置资源的地方,改成引用工程里放置的资源 FindBuildinResources.cs
standard材质球
- 遍历所有材质球,发现材质球上使用的shader是standard的,罗列出来
- 遍历所有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();
}
划线处全部改成使用红片材质球 红片材质球是一个公用的材质球,使用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即为有问题的图集