/// <summary> /// 加载配置文件 /// </summary> private static void LoadSettingData() { // 加载配置文件 _setting = AssetDatabase.LoadAssetAtPath <AssetImporterSetting>(EditorDefine.AssetImporterSettingFilePath); if (_setting == null) { Debug.LogWarning($"Create new {nameof(AssetImporterSetting)}.asset : {EditorDefine.AssetImporterSettingFilePath}"); _setting = ScriptableObject.CreateInstance <AssetImporterSetting>(); EditorTools.CreateFileDirectory(EditorDefine.AssetImporterSettingFilePath); AssetDatabase.CreateAsset(Setting, EditorDefine.AssetImporterSettingFilePath); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } else { Debug.Log($"Load {nameof(AssetImporterSetting)}.asset ok"); } // 清空缓存集合 _cacheTypes.Clear(); _cacheProcessor.Clear(); // 获取所有资源处理器类型 List <Type> types = AssemblyUtility.GetAssignableTypes(AssemblyUtility.UnityDefaultAssemblyEditorName, typeof(IAssetProcessor)); types.Add(typeof(DefaultProcessor)); for (int i = 0; i < types.Count; i++) { Type type = types[i]; if (_cacheTypes.ContainsKey(type.Name) == false) { _cacheTypes.Add(type.Name, type); } } }
/// <summary> /// 开始收集 /// </summary> public static void Run(string saveFilePath, GameObject sceneGameObjects) { if (_isStarted) { return; } if (Path.HasExtension(saveFilePath) == false) { saveFilePath = $"{saveFilePath}.shadervariants"; } if (Path.GetExtension(saveFilePath) != ".shadervariants") { throw new System.Exception("Shader variant file extension is invalid."); } EditorTools.CreateFileDirectory(saveFilePath); _saveFilePath = saveFilePath; // 聚焦到游戏窗口 EditorTools.FocusUnityGameWindow(); // 清空旧数据 ClearCurrentShaderVariantCollection(); // 收集着色器变种 var materials = GetAllMaterials(); CollectVariants(materials, sceneGameObjects); _isStarted = true; _elapsedTime.Reset(); _elapsedTime.Start(); UnityEngine.Debug.LogWarning("已经启动着色器变种收集工作,该工具只支持在编辑器下人工操作!"); }
static ImportSettingData() { // 加载配置文件 Setting = AssetDatabase.LoadAssetAtPath <ImportSetting>(EditorDefine.ImporterSettingFilePath); if (Setting == null) { Debug.LogWarning($"Create new ImportSetting.asset : {EditorDefine.ImporterSettingFilePath}"); Setting = ScriptableObject.CreateInstance <ImportSetting>(); EditorTools.CreateFileDirectory(EditorDefine.ImporterSettingFilePath); AssetDatabase.CreateAsset(Setting, EditorDefine.ImporterSettingFilePath); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } else { Debug.Log("Load ImportSetting.asset ok"); } // Clear CacheTypes.Clear(); CacheProcessor.Clear(); // 获取所有资源处理器类型 List <Type> result = AssemblyUtility.GetAssignableTypes(typeof(IAssetProcessor)); for (int i = 0; i < result.Count; i++) { Type type = result[i]; if (CacheTypes.ContainsKey(type.Name) == false) { CacheTypes.Add(type.Name, type); } } }
static CollectionSettingData() { // 加载配置文件 Setting = AssetDatabase.LoadAssetAtPath <CollectionSetting>(EditorDefine.CollectorSettingFilePath); if (Setting == null) { Debug.LogWarning($"Create new CollectionSetting.asset : {EditorDefine.CollectorSettingFilePath}"); Setting = ScriptableObject.CreateInstance <CollectionSetting>(); EditorTools.CreateFileDirectory(EditorDefine.CollectorSettingFilePath); AssetDatabase.CreateAsset(Setting, EditorDefine.CollectorSettingFilePath); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } else { Debug.Log("Load CollectionSetting.asset ok"); } }
/// <summary> /// 加载配置文件 /// </summary> private static void LoadSettingData() { // 加载配置文件 _setting = AssetDatabase.LoadAssetAtPath <AssetBundleCollectorSetting>(EditorDefine.AssetBundleCollectorSettingFilePath); if (_setting == null) { Debug.LogWarning($"Create new {nameof(AssetBundleCollectorSetting)}.asset : {EditorDefine.AssetBundleCollectorSettingFilePath}"); _setting = ScriptableObject.CreateInstance <AssetBundleCollectorSetting>(); EditorTools.CreateFileDirectory(EditorDefine.AssetBundleCollectorSettingFilePath); AssetDatabase.CreateAsset(Setting, EditorDefine.AssetBundleCollectorSettingFilePath); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } else { Debug.Log($"Load {nameof(AssetBundleCollectorSetting)}.asset ok"); } }
/// <summary> /// 加载配置文件 /// </summary> private static void LoadSettingData() { // 加载配置文件 _setting = AssetDatabase.LoadAssetAtPath <AssetBundleCollectorSetting>(EditorDefine.AssetBundleCollectorSettingFilePath); if (_setting == null) { Debug.LogWarning($"Create new {nameof(AssetBundleCollectorSetting)}.asset : {EditorDefine.AssetBundleCollectorSettingFilePath}"); _setting = ScriptableObject.CreateInstance <AssetBundleCollectorSetting>(); EditorTools.CreateFileDirectory(EditorDefine.AssetBundleCollectorSettingFilePath); AssetDatabase.CreateAsset(Setting, EditorDefine.AssetBundleCollectorSettingFilePath); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } else { Debug.Log($"Load {nameof(AssetBundleCollectorSetting)}.asset ok"); } // 收集器类型 { // 清空缓存集合 _cacheLabelTypes.Clear(); _cacheLabelInstance.Clear(); // 获取所有类型 List <Type> types = new List <Type>(100) { typeof(LabelByFilePath), typeof(LabelByFolderPath) }; var customTypes = AssemblyUtility.GetAssignableTypes(AssemblyUtility.UnityDefaultAssemblyEditorName, typeof(IBundleLabel)); types.AddRange(customTypes); for (int i = 0; i < types.Count; i++) { Type type = types[i]; if (_cacheLabelTypes.ContainsKey(type.Name) == false) { _cacheLabelTypes.Add(type.Name, type); } } } // 过滤器类型 { // 清空缓存集合 _cacheFilterTypes.Clear(); _cacheFilterInstance.Clear(); // 获取所有类型 List <Type> types = new List <Type>(100) { typeof(SearchAll), typeof(SearchScene), typeof(SearchPrefab), typeof(SearchSprite) }; var customTypes = AssemblyUtility.GetAssignableTypes(AssemblyUtility.UnityDefaultAssemblyEditorName, typeof(ISearchFilter)); types.AddRange(customTypes); for (int i = 0; i < types.Count; i++) { Type type = types[i]; if (_cacheFilterTypes.ContainsKey(type.Name) == false) { _cacheFilterTypes.Add(type.Name, type); } } } }