using UnityEngine.UI; using UnityEngine; // This is a button that grays out its children, so turning off interactive looks right public class MultiImageButton : UnityEngine.UI.Button { private Graphic[] m_graphics; protected Graphic[] Graphics { get { if (m_graphics == null) { m_graphics = targetGraphic.transform.GetComponentsInChildren(); } return m_graphics; } } protected override void DoStateTransition(SelectionState state, bool instant) { Color color; switch (state) { case Selectable.SelectionState.Normal: color = this.colors.normalColor; break; case Selectable.SelectionState.Highlighted: color = this.colors.highlightedColor; break; case Selectable.SelectionState.Pressed: color = this.colors.pressedColor; break; case Selectable.SelectionState.Disabled: color = this.colors.disabledColor; break; default: color = Color.black; break; } if (base.gameObject.activeInHierarchy) { switch (this.transition) { case Selectable.Transition.ColorTint: ColorTween(color * this.colors.colorMultiplier, instant); break; default: base.DoStateTransition(state, instant); break; } } } private void ColorTween(Color targetColor, bool instant) { if (this.targetGraphic == null) { return; } foreach (Graphic g in this.Graphics) { g.CrossFadeColor(targetColor, (!instant) ? this.colors.fadeDuration : 0f, true, true); } } }