CombinedSkin.cs 965 B

123456789101112131415161718192021222324252627282930313233
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Spine.Unity.Modules.AttachmentTools;
  5. namespace Spine.Unity.Examples {
  6. public class CombinedSkin : MonoBehaviour {
  7. [SpineSkin]
  8. public List<string> skinsToCombine;
  9. Skin combinedSkin;
  10. void Start () {
  11. var skeletonComponent = GetComponent<ISkeletonComponent>();
  12. if (skeletonComponent == null) return;
  13. var skeleton = skeletonComponent.Skeleton;
  14. if (skeleton == null) return;
  15. combinedSkin = combinedSkin ?? new Skin("combined");
  16. combinedSkin.Clear();
  17. foreach (var skinName in skinsToCombine) {
  18. var skin = skeleton.Data.FindSkin(skinName);
  19. if (skin != null) combinedSkin.Append(skin);
  20. }
  21. skeleton.SetSkin(combinedSkin);
  22. skeleton.SetToSetupPose();
  23. var animationStateComponent = skeletonComponent as IAnimationStateComponent;
  24. if (animationStateComponent != null) animationStateComponent.AnimationState.Apply(skeleton);
  25. }
  26. }
  27. }