diff --git a/Assets/Scripts/Editor/FbxAnimListPostprocessor.cs b/Assets/Scripts/Editor/FbxAnimListPostprocessor.cs index 0f451c54..fdb5e5fe 100644 --- a/Assets/Scripts/Editor/FbxAnimListPostprocessor.cs +++ b/Assets/Scripts/Editor/FbxAnimListPostprocessor.cs @@ -5,80 +5,86 @@ using System.Collections; using System.IO; using System.Text.RegularExpressions; using System; -using System.IO; public class FbxAnimListPostprocessor : MonoBehaviour { [MenuItem("Assets/SplitAnimNew")] public static void SplitAnim() - { - UnityEngine.Object obj = Selection.activeObject; - if( null != obj ) + { + UnityEngine.Object obj = Selection.activeObject; + if (null != obj) { string assetPath = AssetDatabase.GetAssetPath(obj); - try - { - string fileAnim; - fileAnim = assetPath; - string ClipText = Path.ChangeExtension(fileAnim, ".txt"); - StreamReader file = new StreamReader(ClipText); - string sAnimList = file.ReadToEnd(); - file.Close(); - // - if (EditorUtility.DisplayDialog("FBX Animation Import from file", - fileAnim, "Import", "Cancel")) - { - System.Collections.ArrayList List = new ArrayList(); - ParseAnimFile(sAnimList, ref List); + try + { + string fileAnim; + fileAnim = assetPath; + string ClipText = Path.ChangeExtension(fileAnim, ".txt"); + StreamReader file = new StreamReader(ClipText); + string sAnimList = file.ReadToEnd(); + file.Close(); + // + if (EditorUtility.DisplayDialog("FBX Animation Import from file", + fileAnim, "Import", "Cancel")) + { + System.Collections.ArrayList List = new ArrayList(); + ParseAnimFile(sAnimList, ref List); ModelImporter modelImporter = ModelImporter.GetAtPath(assetPath) as ModelImporter; modelImporter.animationType = ModelImporterAnimationType.Legacy; - //modelImporter.clipAnimations. = true; - modelImporter.clipAnimations = (ModelImporterClipAnimation[]) - List.ToArray(typeof(ModelImporterClipAnimation)); + //modelImporter.clipAnimations. = true; + modelImporter.clipAnimations = (ModelImporterClipAnimation[]) + List.ToArray(typeof(ModelImporterClipAnimation)); AssetDatabase.ImportAsset(assetPath); - EditorUtility.DisplayDialog("导入成功", - "Number of imported clips: " - + modelImporter.clipAnimations.GetLength(0).ToString(), "OK"); - } - } - catch { } - // (Exception e) { EditorUtility.DisplayDialog("Imported animations", e.Message, "OK"); } - } - } + EditorUtility.DisplayDialog("导入成功", + "Number of imported clips: " + + modelImporter.clipAnimations.GetLength(0).ToString(), "OK"); + } + } + catch { } + // (Exception e) { EditorUtility.DisplayDialog("Imported animations", e.Message, "OK"); } + } + } - static void ParseAnimFile(string sAnimList, ref System.Collections.ArrayList List) - { - Regex regexString = new Regex(" *(?[0-9]+) *- *(?[0-9]+) *(?(loop|noloop| )) *(?[^\r^\n]*[^\r^\n^ ])", - RegexOptions.Compiled | RegexOptions.ExplicitCapture); + static void ParseAnimFile(string sAnimList, ref System.Collections.ArrayList List) + { + Regex regexString = new Regex(" *(?[0-9]+) *- *(?[0-9]+) *(?(loop|noloop| )) *(?[^\r^\n]*[^\r^\n^ ])", + RegexOptions.Compiled | RegexOptions.ExplicitCapture); - Match match = regexString.Match(sAnimList, 0); - while (match.Success) - { - ModelImporterClipAnimation clip = new ModelImporterClipAnimation(); + Match match = regexString.Match(sAnimList, 0); + while (match.Success) + { + ModelImporterClipAnimation clip = new ModelImporterClipAnimation(); - if (match.Groups["firstFrame"].Success) - { - clip.firstFrame = System.Convert.ToInt32(match.Groups["firstFrame"].Value, 10); - } - if (match.Groups["lastFrame"].Success) - { - clip.lastFrame = System.Convert.ToInt32(match.Groups["lastFrame"].Value, 10); - } - if (match.Groups["loop"].Success) - { - clip.loop = match.Groups["loop"].Value == "loop"; - } - if (match.Groups["name"].Success) - { - clip.name = match.Groups["name"].Value; - } + if (match.Groups["firstFrame"].Success) + { + clip.firstFrame = System.Convert.ToInt32(match.Groups["firstFrame"].Value, 10); + } + if (match.Groups["lastFrame"].Success) + { + clip.lastFrame = System.Convert.ToInt32(match.Groups["lastFrame"].Value, 10); + } + if (match.Groups["loop"].Success) + { + if (match.Groups["loop"].Value == "loop") + { + clip.loop = true; + clip.wrapMode = WrapMode.Loop; + } + else + { + clip.loop = false; + } + } + if (match.Groups["name"].Success) + { + clip.name = match.Groups["name"].Value; + } + List.Add(clip); - List.Add(clip); - - match = regexString.Match(sAnimList, match.Index + match.Length); - } - } + match = regexString.Match(sAnimList, match.Index + match.Length); + } + } } \ No newline at end of file