Пример #1
0
        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();
            }
        }
Пример #2
0
 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);
 }
Пример #3
0
        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);
        }