AlphaTransitions.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. #pragma warning disable 0649 // disable "never assigned" warnings
  8. namespace TheraBytes.BetterUi
  9. {
  10. [Serializable]
  11. public class AlphaTransitions : TransitionStateCollection<float>
  12. {
  13. [Serializable]
  14. public class AlphaTransitionState : TransitionState
  15. {
  16. public AlphaTransitionState(string name, float stateObject)
  17. : base(name, stateObject)
  18. { }
  19. }
  20. public override UnityEngine.Object Target { get { return target; } }
  21. public float FadeDurtaion { get { return fadeDuration; } set { fadeDuration = value; } }
  22. [SerializeField]
  23. Graphic target;
  24. [SerializeField]
  25. float fadeDuration = 0.1f;
  26. [SerializeField]
  27. List<AlphaTransitionState> states = new List<AlphaTransitionState>();
  28. public AlphaTransitions(params string[] stateNames)
  29. : base(stateNames)
  30. {
  31. }
  32. protected override void ApplyState(TransitionState state, bool instant)
  33. {
  34. if (this.Target == null)
  35. return;
  36. if (!(Application.isPlaying))
  37. {
  38. instant = true;
  39. }
  40. this.target.CrossFadeAlpha(state.StateObject, (instant) ? 0f : this.fadeDuration, true);
  41. }
  42. internal override void AddStateObject(string stateName)
  43. {
  44. var obj = new AlphaTransitionState(stateName, 1f);
  45. this.states.Add(obj);
  46. }
  47. protected override IEnumerable<TransitionState> GetTransitionStates()
  48. {
  49. foreach (var s in states)
  50. yield return s;
  51. }
  52. internal override void SortStates(string[] sortedOrder)
  53. {
  54. base.SortStatesLogic(states, sortedOrder);
  55. }
  56. }
  57. }