summaryrefslogtreecommitdiff
path: root/Assets/Editor/Tools/ExtractAnimationTool.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-08-02 08:35:26 +0800
committerchai <chaifix@163.com>2021-08-02 08:35:26 +0800
commitce73a13f28e5a947df8f1f87f1f1be20010952ec (patch)
tree2c430bcd93f2c09bd35340def7c556c7294d6b5d /Assets/Editor/Tools/ExtractAnimationTool.cs
parent81acfeb9a1d88075899d9c21064330915caa59a4 (diff)
* 测试
Diffstat (limited to 'Assets/Editor/Tools/ExtractAnimationTool.cs')
-rw-r--r--Assets/Editor/Tools/ExtractAnimationTool.cs68
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");
+ }
+
+}