1. 当FBX没有勾选 Import Materials 选项的时候,Unity3D 会自动添加 Default Diffuse 材质球,这个材质球使用的是Standard 。
2. 当加载这个FBX相关的Prefab的时候,会导致Shader.Parse(Standard)消耗,这个消耗其实是没有什么必要的,因为Prefab里面使用了真正的Material,而且Shader.Parse(Standard)消耗还是十分大的,所以,可以在 AssetPostprocessor 中统一把FBX的Materials.Count设置为0.
private void HandleDeleteFbxMaterials(GameObject model)
{
ModelImporter modelImp = (ModelImporter)assetImporter;
string path = assetPath.ToLower();
if (path.EndsWith(".fbx"))
{
Renderer[] renderComs = model.GetComponentsInChildren<Renderer>();
for (int i = 0; i < renderComs.Length; i++)
{
renderComs[i].sharedMaterial = null;
if (renderComs[i].sharedMaterials != null)
{
renderComs[i].sharedMaterials = new Material[0];
}
}
}
}