AnimationBackFill.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using ChivaXR;
  2. using Sirenix.OdinInspector;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using UnityEngine;
  7. public class AnimationBackFill : MonoBehaviour
  8. {
  9. #if UNITY_EDITOR
  10. [HideInInspector]
  11. public string targetOperationDataName;
  12. [HideInInspector]
  13. public string sourceOperationDataName;
  14. [LabelText("动画源")]
  15. [ShowInInspector]
  16. [ValueDropdown("GetAllOperationDataNames", IsUniqueList = true)]
  17. public string OperationDataNameSource
  18. {
  19. get { return sourceOperationDataName; }
  20. set
  21. {
  22. if (sourceOperationDataName != value)
  23. {
  24. sourceOperationDataName = value;
  25. }
  26. }
  27. }
  28. [LabelText("回装动画")]
  29. [ShowInInspector]
  30. [ValueDropdown("GetAllOperationDataNames", IsUniqueList = true)]
  31. public string OperationDataNameTarget
  32. {
  33. get { return targetOperationDataName; }
  34. set
  35. {
  36. if (targetOperationDataName != value)
  37. {
  38. targetOperationDataName = value;
  39. }
  40. }
  41. }
  42. private static IEnumerable GetAllOperationDataNames()
  43. {
  44. return AnimationManager.Instance.animationDatas.Select(s => new ValueDropdownItem(s.AniDataName, s.AniDataName));
  45. }
  46. [Button("导入")]
  47. [PropertySpace(SpaceBefore=80)]
  48. public void AddSelectOperationData()
  49. {
  50. if (sourceOperationDataName == "" || targetOperationDataName == "") { return; }
  51. AniDataContainer sourceTmpAniDataContainer =
  52. AnimationManager.Instance.animationDatas.Where(s => s.AniDataName == sourceOperationDataName).First();
  53. AniDataContainer targeTmpAniDataContainer =
  54. AnimationManager.Instance.animationDatas.Where(s => s.AniDataName == targetOperationDataName).First();
  55. if (sourceTmpAniDataContainer != null || targeTmpAniDataContainer != null)
  56. {
  57. targeTmpAniDataContainer.aniData.AnimationDriverDatas = new List<AnimationDriverBase>(sourceTmpAniDataContainer.aniData.AnimationDriverDatas);
  58. targeTmpAniDataContainer.aniData.AnimationDriverDatas.Reverse();
  59. try
  60. {
  61. /* AniDataEditorContainer sourceAnimationEditorDatas =
  62. AnimationDataEditor.Instance.animationEditorDatas.Where(s => s.AniName == sourceOperationDataName).First();
  63. AniDataEditorContainer targetAnimationEditorDatas =
  64. AnimationDataEditor.Instance.animationEditorDatas.Where(s => s.AniName == targetOperationDataName).First();
  65. targetAnimationEditorDatas.relatGameObjects = sourceAnimationEditorDatas.relatGameObjects;*/
  66. }
  67. catch (System.Exception)
  68. {
  69. }
  70. }
  71. }
  72. #endif
  73. }