public static void cleanShardAssets(UnityEngine.Object obj) { CLSharedAssets sharedAsset = null; CLRoleAvata avata = null; if (obj is GameObject) { sharedAsset = ((GameObject)obj).GetComponent <CLSharedAssets> (); avata = ((GameObject)obj).GetComponent <CLRoleAvata> (); if (AssetDatabase.GetAssetPath(obj).Contains("/other/model/")) { ECLEditorUtl.cleanModleMaterials(AssetDatabase.GetAssetPath(obj)); } UIFont font = ((GameObject)obj).GetComponent <UIFont> (); if (font != null) { string spName = font.spriteName; font.atlas = null; font.material = null; font.spriteName = spName; } } else if (obj is Material) { CLMaterialPool.cleanTexRef(ECLEditorUtl.getAssetName4Upgrade(obj), (Material)obj); sharedAsset = null; } else { sharedAsset = null; } bool isRefresh = false; if (avata != null) { avata.cleanMaterial(); isRefresh = true; } if (sharedAsset != null) { sharedAsset.cleanRefAssets(); isRefresh = true; } if (isRefresh && obj is GameObject) { // AssetDatabase.Refresh (); //string path = AssetDatabase.GetAssetPath (obj); //EditorUtility.SetDirty (obj); //AssetDatabase.WriteImportSettingsIfDirty (path); //AssetDatabase.ImportAsset (path); PrefabUtility.SavePrefabAsset(obj as GameObject); } }
public static bool getMeshRef(CLSharedAssets sharedAsset, Transform tr) { bool ret = false; bool ret1 = false; bool ret2 = false; bool ret3 = false; MeshFilter[] mfs = tr.GetComponents <MeshFilter> (); Mesh mesh = null; for (int i = 0; i < mfs.Length; i++) { mesh = (mfs [i]).sharedMesh; if (mesh != null) { Coolape.CLSharedAssets.CLMeshInfor clMesh = new Coolape.CLSharedAssets.CLMeshInfor(); clMesh.meshFilter = mfs [i]; ret1 = ECLEditorUtl.moveAsset4Upgrade(mfs [i].sharedMesh) || ret1 ? true : false; string modelName = ECLEditorUtl.getAssetName4Upgrade(mfs [i].sharedMesh); ECLEditorUtl.cleanModleMaterials(modelName); clMesh.modelName = modelName; clMesh.meshName = mesh.name; sharedAsset.meshs.Add(clMesh); } } SkinnedMeshRenderer[] smrs = tr.GetComponents <SkinnedMeshRenderer> (); for (int i = 0; i < smrs.Length; i++) { mesh = (smrs [i]).sharedMesh; if (mesh != null) { Coolape.CLSharedAssets.CLMeshInfor clMesh = new Coolape.CLSharedAssets.CLMeshInfor(); clMesh.skinnedMesh = smrs [i]; ret2 = ECLEditorUtl.moveAsset4Upgrade(smrs [i].sharedMesh) || ret2 ? true : false; string modelName = ECLEditorUtl.getAssetName4Upgrade(smrs [i].sharedMesh); ECLEditorUtl.cleanModleMaterials(modelName); clMesh.modelName = modelName; clMesh.meshName = mesh.name; sharedAsset.meshs.Add(clMesh); } } Animator[] anis = tr.GetComponents <Animator> (); for (int i = 0; i < anis.Length; i++) { if (anis [i].avatar == null) { continue; } Coolape.CLSharedAssets.CLMeshInfor clMesh = new Coolape.CLSharedAssets.CLMeshInfor(); ret2 = ECLEditorUtl.moveAsset4Upgrade(anis [i].avatar) || ret2 ? true : false; string modelName = ECLEditorUtl.getAssetName4Upgrade(anis [i].avatar); clMesh.modelName = modelName; clMesh.animator = anis [i]; sharedAsset.meshs.Add(clMesh); } for (int i = 0; i < tr.childCount; i++) { ret3 = getMeshRef(sharedAsset, tr.GetChild(i)) || ret3 ? true : false; } return(ret1 || ret2 || ret3); }