public static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { var helpers = AssetImportHelperBase.GetAllAssetImportHelper(); var allConfig = AssetImportConfig.LoadConfig(); foreach (string path in importedAssets) { var assetType = Match(helpers, path); if (assetType != AssetType.None) { object config; bool idDefault; config = helpers[assetType].GetAssetConfig(allConfig, path, out idDefault); helpers[assetType].SetImporterByConfig(AssetImporter.GetAtPath(path), (AssetItemConfigBase)config); } } if (deletedAssets.Length == 0 && movedAssets.Length == 0) { return; } bool dirty = false; //删除资源后 删除配置表对应项目 foreach (string path in deletedAssets) { var assetType = Match(helpers, path); if (assetType != AssetType.None) { dirty = allConfig.GetAtlasConfig(assetType).Remove(Path.GetFileNameWithoutExtension(path)); } } //移动资源后 修改配置表对应路径 for (int i = 0; i < movedAssets.Length; i++) { var movePath = movedAssets[i]; var moveFromPath = movedFromAssetPaths[i]; var assetType = Match(helpers, moveFromPath); if (assetType != AssetType.None) { object config; Dictionary <string, object> configDic = allConfig.GetAtlasConfig(assetType); if (configDic.TryGetValue(moveFromPath, out config)) { dirty = true; configDic.Remove(Path.GetFileNameWithoutExtension(moveFromPath)); configDic.Add(movePath, config); } } } if (dirty) { allConfig.SaveConfig(); } }
private void GetAllAssets() { if (selectAssetType == AssetType.None) { ShowNotification(new GUIContent("请选择有效的资源类型")); return; } helper = (AssetImportHelperBase)Assembly.GetExecutingAssembly().CreateInstance(selectAssetType.GetType().Namespace + "." + selectAssetType + AssetImportHelperBase.suffix); assets = helper.GetAllAsset() .OrderBy(item => Path.GetFileNameWithoutExtension(item)) .ToList(); matchList = assets; pageHelper = new PageHelper(assets.Count, 700); }
public static Dictionary <AssetType, AssetImportHelperBase> GetAllAssetImportHelper() { Dictionary <AssetType, AssetImportHelperBase> helpers = new Dictionary <AssetType, AssetImportHelperBase>(); AssetType[] enumArray = (AssetType[])Enum.GetValues(typeof(AssetType)); foreach (AssetType assetType in enumArray) { if (assetType == AssetType.None) { continue; } string enumName = assetType.ToString(); Type type = Type.GetType(assetType.GetType().Namespace + "." + enumName + AssetItemConfigBase.suffix); if (type == null) { Debug.LogError("Can Not Find Type : " + assetType.GetType().Namespace + "." + enumName + AssetItemConfigBase.suffix); continue; } AssetImportHelperBase helper = (AssetImportHelperBase)Assembly.GetExecutingAssembly().CreateInstance(assetType.GetType().Namespace + "." + assetType + AssetImportHelperBase.suffix); helpers.Add(assetType, helper); } return(helpers); }