批量複製FBX中的動畫

其中Button特性為Sirenix.OdinInspector提供的,沒有外掛時換方法呼叫

using Sirenix.OdinInspector; using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; [ExecuteInEditMode] public class CopyAnimationClip : MonoBehaviour { public string path="Assets/Animations/"; public string outpath = "Assets/Animations/TestAnimation/"; private List<AnimationClip> animList = new List<AnimationClip>(); [Button("複製動畫")] public void CopyAnimation() { animList.Clear(); var allfbx = Directory.GetFiles(path, "*.FBX", SearchOption.AllDirectories); var length = allfbx.Length; for (var i = 0; i < length; i++) { UnityEngine.Object[] objs = AssetDatabase.LoadAllAssetsAtPath(allfbx[i]); string name = objs[1].name; //越過第一個檔案,第一個檔案是預覽動畫,拷貝時會報錯 for (var j =1;j< objs.Length; j++) { if (objs[j] is AnimationClip) { AnimationClip clip = new AnimationClip(); clip.name = name; //copy原始動畫到clip EditorUtility.CopySerialized(objs[j], clip); //建立clip到資料夾下 AssetDatabase.CreateAsset(clip, outpath+name+".anim"); } } } //儲存檔案,重新整理 AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } }

隨便看看 更多