From ce73a13f28e5a947df8f1f87f1f1be20010952ec Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 2 Aug 2021 08:35:26 +0800 Subject: =?UTF-8?q?*=20=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Editor/Tools/ExtractAnimationTool.cs | 68 ++++++++++++++++++++++++ Assets/Editor/Tools/ExtractAnimationTool.cs.meta | 11 ++++ 2 files changed, 79 insertions(+) create mode 100644 Assets/Editor/Tools/ExtractAnimationTool.cs create mode 100644 Assets/Editor/Tools/ExtractAnimationTool.cs.meta (limited to 'Assets/Editor/Tools') 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(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(); + } + + /// + /// 提取动画 + /// + /// fbx路径(Unity风格) + public static void ExtractAnimation(string path) + { + AnimationClip clip = AssetDatabase.LoadAssetAtPath(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"); + } + +} diff --git a/Assets/Editor/Tools/ExtractAnimationTool.cs.meta b/Assets/Editor/Tools/ExtractAnimationTool.cs.meta new file mode 100644 index 00000000..992ca882 --- /dev/null +++ b/Assets/Editor/Tools/ExtractAnimationTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 11e96aafc7b5bde4c92f399d1d4c4459 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: -- cgit v1.1-26-g67d0