66 lines
2.2 KiB
C#
66 lines
2.2 KiB
C#
|
using System.Collections;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace Michsky.UI.Heat
|
||
|
{
|
||
|
[RequireComponent(typeof(Animator))]
|
||
|
public class ButtonFrame : MonoBehaviour
|
||
|
{
|
||
|
// Resources
|
||
|
[SerializeField] private Animator animator;
|
||
|
[SerializeField] private ButtonManager buttonManager;
|
||
|
[SerializeField] private PanelButton panelButton;
|
||
|
|
||
|
// Settings
|
||
|
[SerializeField] private ButtonType buttonType = ButtonType.ButtonManager;
|
||
|
|
||
|
public enum ButtonType { ButtonManager, PanelButton }
|
||
|
|
||
|
void Start()
|
||
|
{
|
||
|
if ((buttonType == ButtonType.ButtonManager && buttonManager == null) || (buttonType == ButtonType.PanelButton && panelButton == null)) { return; }
|
||
|
if (animator == null) { animator = GetComponent<Animator>(); }
|
||
|
|
||
|
if (buttonType == ButtonType.ButtonManager)
|
||
|
{
|
||
|
buttonManager.onHover.AddListener(delegate { DoIn(); });
|
||
|
buttonManager.onLeave.AddListener(delegate { DoOut(); });
|
||
|
buttonManager.onSelect.AddListener(delegate { DoIn(); });
|
||
|
buttonManager.onDeselect.AddListener(delegate { DoOut(); });
|
||
|
}
|
||
|
|
||
|
else if (buttonType == ButtonType.PanelButton)
|
||
|
{
|
||
|
panelButton.onHover.AddListener(delegate { DoIn(); });
|
||
|
panelButton.onLeave.AddListener(delegate { DoOut(); });
|
||
|
panelButton.onSelect.AddListener(delegate { DoOut(); });
|
||
|
}
|
||
|
|
||
|
animator.enabled = false;
|
||
|
}
|
||
|
|
||
|
public void DoIn()
|
||
|
{
|
||
|
animator.enabled = true;
|
||
|
animator.CrossFade("In", 0.15f);
|
||
|
|
||
|
StopCoroutine("DisableAnimator");
|
||
|
StartCoroutine("DisableAnimator");
|
||
|
}
|
||
|
|
||
|
public void DoOut()
|
||
|
{
|
||
|
animator.enabled = true;
|
||
|
animator.CrossFade("Out", 0.15f);
|
||
|
|
||
|
StopCoroutine("DisableAnimator");
|
||
|
StartCoroutine("DisableAnimator");
|
||
|
}
|
||
|
|
||
|
IEnumerator DisableAnimator()
|
||
|
{
|
||
|
yield return new WaitForSecondsRealtime(HeatUIInternalTools.GetAnimatorClipLength(animator, "ButtonFrame_In"));
|
||
|
animator.enabled = false;
|
||
|
}
|
||
|
}
|
||
|
}
|