CustomSkin.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using UnityEngine;
  2. using System.Collections;
  3. using Spine;
  4. public class CustomSkin : MonoBehaviour
  5. {
  6. [System.Serializable]
  7. public class SkinPair
  8. {
  9. [SpineAttachment(currentSkinOnly: false, returnAttachmentPath: true, dataField: "skinSource")]
  10. public string sourceAttachment;
  11. [SpineSlot]
  12. public string targetSlot;
  13. [SpineAttachment(currentSkinOnly: true, placeholdersOnly: true)]
  14. public string targetAttachment;
  15. }
  16. public SkeletonDataAsset skinSource;
  17. public SkinPair[] skinning;
  18. public Skin customSkin;
  19. SkeletonRenderer skeletonRenderer;
  20. void Start()
  21. {
  22. skeletonRenderer = GetComponent<SkeletonRenderer>();
  23. Skeleton skeleton = skeletonRenderer.skeleton;
  24. customSkin = new Skin("CustomSkin");
  25. foreach (var pair in skinning)
  26. {
  27. var attachment = SpineAttachment.GetAttachment(pair.sourceAttachment, skinSource);
  28. customSkin.AddAttachment(skeleton.FindSlotIndex(pair.targetSlot), pair.targetAttachment, attachment);
  29. }
  30. skeleton.SetSkin(customSkin);
  31. }
  32. }