当前位置:   article > 正文

unity自定义工具之“导出AnimationClip”_animationclip无法导出 解包

animationclip无法导出 解包
  1. public class TestSaveSprite
  2. {
  3. [MenuItem("Tools/导出AnimationClip")]
  4. public static void AnimationClipsCopy()
  5. {
  6. Object[] go = Selection.objects;
  7. string Path = AssetDatabase.GetAssetPath(go[0]);
  8. string parentPath = getParentPathForAsset(Path);
  9. for (int i = 0; i < go.Length; i++)
  10. {
  11. string fbxPath = AssetDatabase.GetAssetPath(go[i]);
  12. AnimCopy(fbxPath, parentPath,string.Format("{0}Clone",go[i].name));
  13. }
  14. }
  15. /// <summary>
  16. /// 返回传入目录的父目录(相对于asset)
  17. /// </summary>
  18. /// <param name="assetPath"></param>
  19. /// <returns></returns>
  20. public static string getParentPathForAsset(string assetPath)
  21. {
  22. string[] pathName = assetPath.Split('/');
  23. string parentPath = "";
  24. if (pathName.Length < 2 || pathName[pathName.Length - 1] == "")
  25. {
  26. Debug.Log(assetPath + @"没有父目录!");
  27. return parentPath;
  28. }
  29. for (int i = 0; i < pathName.Length - 1; i++)
  30. {
  31. if (i != pathName.Length - 2) parentPath += pathName[i] + @"/";
  32. else
  33. parentPath += pathName[i];
  34. }
  35. return parentPath;
  36. }
  37. static void AnimCopy(string fbxPath, string parentPath, string name)
  38. {
  39. Object[] objs = AssetDatabase.LoadAllAssetsAtPath(fbxPath);
  40. string animationPath = "";
  41. AnimationClipSettings setting;
  42. AnimationClip srcClip;//源AnimationClip
  43. AnimationClip newClip;//新AnimationClip
  44. foreach (Object o in objs)
  45. {
  46. if (o.GetType() == typeof(AnimationClip))
  47. {
  48. srcClip = o as AnimationClip;
  49. newClip = new AnimationClip();
  50. newClip.name = srcClip.name;//设置新clip的名字
  51. if (!Directory.Exists(parentPath + @"/copy/"))
  52. Directory.CreateDirectory(parentPath + @"/copy/");
  53. animationPath = parentPath + @"/copy/" + newClip.name + ".anim";
  54. setting = AnimationUtility.GetAnimationClipSettings(srcClip);//获取AnimationClipSettings
  55. AnimationUtility.SetAnimationClipSettings(newClip, setting);//设置新clip的AnimationClipSettings
  56. newClip.frameRate = srcClip.frameRate;//设置新clip的帧率
  57. EditorCurveBinding[] curveBindings = AnimationUtility.GetCurveBindings(srcClip);//获取clip的curveBinds
  58. for (int i = 0; i < curveBindings.Length; i++)
  59. {
  60. AnimationUtility.SetEditorCurve(newClip, curveBindings[i], AnimationUtility.GetEditorCurve(srcClip, curveBindings[i]));//设置新clip的curve
  61. }
  62. AssetDatabase.CreateAsset(newClip, animationPath); //AssetDatabase中的路径都是相对Asset的 如果指定路径已存在asset则会被删除,然后创建新的asset
  63. AssetDatabase.SaveAssets();//保存修改
  64. AssetDatabase.Refresh();
  65. }
  66. }
  67. }
  68. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/48371
推荐阅读
相关标签
  

闽ICP备14008679号