summaryrefslogtreecommitdiff
path: root/Assets/Tools/Editor/ExtractAnimationTool.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-09-15 12:50:26 +0800
committerchai <chaifix@163.com>2021-09-15 12:50:26 +0800
commit98f31f197a126850a5878cd6e583ae6dbf64ab3d (patch)
tree207f726fb027c227d2fd58bd1bc340cb3a7eaf67 /Assets/Tools/Editor/ExtractAnimationTool.cs
parentad950c25abdf7f5a2f0428863d4035e9eb168fd5 (diff)
*rename
Diffstat (limited to 'Assets/Tools/Editor/ExtractAnimationTool.cs')
-rw-r--r--Assets/Tools/Editor/ExtractAnimationTool.cs68
1 files changed, 68 insertions, 0 deletions
diff --git a/Assets/Tools/Editor/ExtractAnimationTool.cs b/Assets/Tools/Editor/ExtractAnimationTool.cs
new file mode 100644
index 00000000..044e0446
--- /dev/null
+++ b/Assets/Tools/Editor/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/Animations/";
+ static string animExtractRoot = "Assets/Art/AnimationClips/";
+
+ [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");
+ }
+
+}