public static void createResources(GAFAnimationAsset _Asset)
        {
            var assetPath = AssetDatabase.GetAssetPath(_Asset);
            if (!string.IsNullOrEmpty(assetPath))
            {
                GAFSystemEditor.getCachePath();

                var assetGUID = AssetDatabase.AssetPathToGUID(assetPath);
                var resourceTexturesNames = new Dictionary<KeyValuePair<float, float>, List<string>>();

                _Asset.resetGUID(assetGUID);

                foreach (var timeline in _Asset.getTimelines())
                {
                    foreach (var atlas in timeline.atlases)
                    {
                        foreach (var data in atlas.texturesData.Values)
                        {
                            foreach (var textureInfo in data.files)
                            {
                                string textureName = Path.GetFileNameWithoutExtension(textureInfo.Value);
                                var key = new KeyValuePair<float, float>(atlas.scale, textureInfo.Key);

                                if (!resourceTexturesNames.ContainsKey(key))
                                    resourceTexturesNames[key] = new List<string>();

                                resourceTexturesNames[key].Add(textureName);
                            }
                        }
                    }
                }

                m_Resources.RemoveAll(resource => resource == null || !resource.isValid);

                foreach (var pair in resourceTexturesNames)
                {
                    var name = _Asset.getResourceName(pair.Key.Key, pair.Key.Value) + ".asset";
                    var path = GAFSystemEditor.getCachePath() + name;
                    var initialResDir = Path.GetDirectoryName(assetPath).Replace('\\', '/') + "/";

                    var resource = ScriptableObject.CreateInstance<GAFTexturesResource>();
                    resource = GAFAssetUtils.saveAsset(resource, path);
                    resource.initialize(_Asset, pair.Value.Distinct().ToList(), pair.Key.Key, pair.Key.Value, initialResDir);
                    EditorUtility.SetDirty(resource);

                    findResourceTextures(resource, true);

                    if (!resource.isReady)
                        m_Resources.Add(resource);
                }

                EditorUtility.SetDirty(_Asset);
            }
        }
        public static void deleteResources(GAFAnimationAsset _Asset)
        {
            var assetPath = AssetDatabase.GetAssetPath(_Asset);
            if (!string.IsNullOrEmpty(assetPath))
            {
                var resourcePaths = _Asset.resourcesPaths;
                foreach (var path in resourcePaths)
                {
                    AssetDatabase.DeleteAsset(path);
                }

                _Asset.resetGUID(AssetDatabase.AssetPathToGUID(assetPath));
                EditorUtility.SetDirty(_Asset);
            }
        }