diff options
author | chai <chaifix@163.com> | 2021-08-02 08:35:26 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-08-02 08:35:26 +0800 |
commit | ce73a13f28e5a947df8f1f87f1f1be20010952ec (patch) | |
tree | 2c430bcd93f2c09bd35340def7c556c7294d6b5d /Assets/Editor/Tools/ExtractAnimationTool.cs | |
parent | 81acfeb9a1d88075899d9c21064330915caa59a4 (diff) |
* 测试
Diffstat (limited to 'Assets/Editor/Tools/ExtractAnimationTool.cs')
-rw-r--r-- | Assets/Editor/Tools/ExtractAnimationTool.cs | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/Assets/Editor/Tools/ExtractAnimationTool.cs b/Assets/Editor/Tools/ExtractAnimationTool.cs new file mode 100644 index 00000000..5586a19f --- /dev/null +++ b/Assets/Editor/Tools/ExtractAnimationTool.cs @@ -0,0 +1,68 @@ +using System.IO; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +public static class ExtractAnimationTool +{ + + static string animationRoot = "Assets/Art/AnimClips/"; + static string animExtractRoot = "Assets/Art/Animations/"; + + [MenuItem("Erika/Extract All Animation")] + static void ExtractAnimations() + { + string[] files = Directory.GetFiles(animationRoot, "*.fbx", SearchOption.AllDirectories); + if (EditorUtility.DisplayCancelableProgressBar("Extract Animation 0/" + files.Length, "...", 0)) + { + return; + } + for (int i = 0; i < files.Length;++i) + { + string file = files[i].Replace("\\", "/").Replace(Application.dataPath, "Assets/"); + string name = Path.GetFileNameWithoutExtension(file); + //UnityEngine.Object[] clips = AssetDatabase.LoadAllAssetsAtPath(file); + //int k = 0; + //for (int j = 0; j < clips.Length; ++j) + //{ + // if (!(clips[j] is AnimationClip && clips[j])) + // continue; + + //AnimationClip clip = clips[j] as AnimationClip; + AnimationClip clip = AssetDatabase.LoadAssetAtPath<AnimationClip>(file); + if (clip == null) + continue; + string saveFolder = Path.GetDirectoryName(file).Replace("\\", "/").Replace(animationRoot, animExtractRoot) + "/"; + if (!Directory.Exists(saveFolder)) + Directory.CreateDirectory(saveFolder); + //string savePath = saveFolder + name + (k == 0? "": "_" + k.ToString()) + ".anim"; + string savePath = saveFolder + name + ".anim"; + AnimationClip saveClip = Object.Instantiate(clip); + AssetDatabase.CreateAsset(saveClip, savePath); + //++k; + //} + if(EditorUtility.DisplayCancelableProgressBar("Extract Animations "+ (i+1) + "/" + files.Length, file, (i + 1) /(float) files.Length) ) + { + break; + } + } + EditorUtility.ClearProgressBar(); + } + + /// <summary> + /// 提取动画 + /// </summary> + /// <param name="path">fbx路径(Unity风格)</param> + public static void ExtractAnimation(string path) + { + AnimationClip clip = AssetDatabase.LoadAssetAtPath<AnimationClip>(path); + if (clip == null) + return; + string name = Path.GetFileNameWithoutExtension(path); + string folder = Path.GetDirectoryName(path).Replace(animationRoot, animExtractRoot); + AnimationClip saveClip = Object.Instantiate(clip); + AssetDatabase.CreateAsset(saveClip, folder + "/" + name + ".anim"); + } + +} |