Ei kuvausta
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AnimatorControllerGeneration.cs 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System.Collections.Generic;
  2. using UnityEditor.Animations;
  3. using UnityEditor.AssetImporters;
  4. using UnityEngine;
  5. namespace UnityEditor.U2D.Aseprite
  6. {
  7. internal static class AnimatorControllerGeneration
  8. {
  9. public static void Generate(AssetImportContext ctx, string assetName, GameObject rootGameObject, bool generateModelPrefab)
  10. {
  11. var assetObjects = new List<Object>();
  12. ctx.GetObjects(assetObjects);
  13. var animationClips = new List<AnimationClip>();
  14. foreach (var obj in assetObjects)
  15. {
  16. if (obj is AnimationClip clip)
  17. animationClips.Add(clip);
  18. }
  19. if (animationClips.Count == 0)
  20. return;
  21. var controller = new AnimatorController();
  22. controller.name = assetName;
  23. controller.AddLayer("Base Layer");
  24. foreach (var clip in animationClips)
  25. controller.AddMotion(clip);
  26. ctx.AddObjectToAsset(controller.name + "_Controller", controller);
  27. foreach (var layer in controller.layers)
  28. {
  29. var stateMachine = layer.stateMachine;
  30. ctx.AddObjectToAsset(stateMachine.name + "_StateMachine", stateMachine);
  31. foreach (var state in stateMachine.states)
  32. ctx.AddObjectToAsset(state.state.name + "_State", state.state);
  33. }
  34. if (generateModelPrefab)
  35. {
  36. var animator = rootGameObject.AddComponent<Animator>();
  37. AnimatorController.SetAnimatorController(animator, controller);
  38. }
  39. }
  40. }
  41. }