/// <summary> /// /// </summary> /// <param name="type">0--all 1--scene 2--other</param> /// <returns></returns> private static int SetAllAssetInDbOnce(int type) { int totalModifiedCount = 0; ResourceEditUtility.UseSpecificSettingDB = true; ResourceEditUtility.EnableSaveAndReimport = true; try { AssetDatabase.StartAssetEditing(); var processedAssets = new HashSet <string>(); int count = DBInstance.Count; for (int i = 0; i < count; ++i) { AssetProcessorInfo param = DBInstance[i]; param.PrepareFiltersAndProcesses(); if (type == 1 && !param.ResPath.Contains("SceneRes")) { continue; } else if (type == 2 && param.ResPath.Contains("SceneRes")) { continue; } ResourceProcessor.Instance.SelectDsl(param.DslPath); ResourceProcessor.Instance.CollectPath = param.ResPath; ResourceProcessor.Instance.OverridedProgressTitle = string.Format("{0}/{1}", i + 1, count); ResourceProcessor.Instance.Refresh(true); ResourceProcessor.Instance.OverridedProgressTitle = string.Format("{0}/{1}", i + 1, count); ResourceProcessor.Instance.SelectAll(); int ct = ResourceProcessor.Instance.Process(true); if (ct > 0) { totalModifiedCount += ct; } } TextureImporterParamsDB.UpdateAllTextures(); ModelImporterParamsDB.UpdateAllModels(); PrefabParamsDB.UpdateAllPrefabs(); return(totalModifiedCount); } finally { ResourceEditUtility.EnableSaveAndReimport = false; AssetDatabase.StopAssetEditing(); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(ImportAssetOptions.Default); EditorUtility.UnloadUnusedAssetsImmediate(true); EditorUtility.ClearProgressBar(); } }
public override void OnInspectorGUI() { bool saveDB = false; toDel.Clear(); ModelImporterParamsDB db = target as ModelImporterParamsDB; int count = db.Data.Count; if (count == 0) { GUILayout.BeginHorizontal(); GUILayout.Label(EMPTY); GUILayout.EndHorizontal(); } else { for (int i = 0; i < count; ++i) { string guid = db.Data.GetResourceKey(i); string path = AssetDatabase.GUIDToAssetPath(guid); ResourceParams param = db.Data.GetResourceParams(i); bool valid = !string.IsNullOrEmpty(path) && param != null; if (!valid) { GUILayout.BeginHorizontal(); GUILayout.Label(VALID); if (GUILayout.Button(DELETE)) { toDel.Add(guid); saveDB = true; } GUILayout.EndHorizontal(); } else { if (foldout.Count < i + 1) { foldout.Add(false); } var pathArr = path.Split('/'); if (EditorGUILayout.Foldout(foldout[i], i + ":" + pathArr[pathArr.Length - 1].ToString())) { foldout[i] = true; for (int ix = 0; ix < param.Count; ++ix) { var key = param.GetKey(ix); var val = param.GetValue(ix); GUILayout.BeginHorizontal(); GUILayout.Label(string.Format("{0}:{1}", key, val)); GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(); if (GUILayout.Button(SELECT)) { var asset = AssetDatabase.LoadMainAssetAtPath(path); if (asset == null) { if (EditorUtility.DisplayDialog(NOT_FOUND_TITLE, string.Format(NOT_FOUND_CONTEXT, path), OK, NO)) { toDel.Add(guid); saveDB = true; } } else { Selection.activeObject = asset; } } if (GUILayout.Button(UPDATERES)) { var importer = AssetImporter.GetAtPath(path) as ModelImporter; if (null != importer) { ModelImporterParamsDB.UpdateModel(path, importer, false); AssetDatabase.ImportAsset(path); } } if (GUILayout.Button(UPDATEDB)) { var importer = AssetImporter.GetAtPath(path) as ModelImporter; if (null != importer) { ModelImporterParamsDB.UpdateDB(path, importer); saveDB = true; } } if (GUILayout.Button(DELETE)) { toDel.Add(guid); saveDB = true; } GUILayout.EndHorizontal(); } else { foldout[i] = false; } } } GUILayout.BeginHorizontal(); if (GUILayout.Button(ModelImporterParamsDB.SYNC_ALL)) { ResourceEditUtility.ResetResourceParamsCalculator(); ModelImporterParamsDB.UpdateAllModels(); } GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(); objToAdd = EditorGUILayout.ObjectField(objToAdd, typeof(UnityEngine.GameObject), false); if (GUILayout.Button(ADD) && null != objToAdd) { var path = AssetDatabase.GetAssetPath(objToAdd); var importer = AssetImporter.GetAtPath(path) as ModelImporter; if (null != importer) { ModelImporterParamsDB.UpdateDB(path, importer); saveDB = true; } } GUILayout.EndHorizontal(); foreach (var del in toDel) { db.Data.Remove(del); } if (saveDB) { EditorUtility.SetDirty(target); AssetDatabase.SaveAssets(); } GUILayout.BeginHorizontal(); if (GUILayout.Button(ModelImporterParamsDB.IMPORT)) { string file = EditorUtility.OpenFilePanel(ModelImporterParamsDB.IMPORT_DIALOG, string.Empty, "json"); if (!string.IsNullOrEmpty(file)) { ModelImporterParamsDB.Import(file); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button(ModelImporterParamsDB.EXPORT)) { string file = EditorUtility.SaveFilePanel(ModelImporterParamsDB.EXPORT_DIALOG, string.Empty, "modeldata", "json"); if (!string.IsNullOrEmpty(file)) { ModelImporterParamsDB.Export(file); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button(ModelImporterParamsDB.FETCH)) { ModelImporterParamsDB.Fetch(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button(ModelImporterParamsDB.COMMIT)) { ModelImporterParamsDB.Commit(); } GUILayout.EndHorizontal(); }
public static void CreateAsset() { ModelImporterParamsDB param = ScriptableObject.CreateInstance <ModelImporterParamsDB>(); ProjectWindowUtil.CreateAsset(param, PATH); }