AxibugEmuOnline/AxibugEmuOnline.Client/Assets/Script/UI/OverlayUI/OverlayUI.cs

57 lines
1.5 KiB
C#

using DG.Tweening;
using UnityEngine;
namespace AxibugEmuOnline.Client
{
public abstract class OverlayUI : CommandExecuter
{
public override bool AloneMode => true;
public override bool Enable => true;
public float StartAlpha = 0;
public float StartScale = 1.2f;
public float Duration = 0.5f;
public Ease Ease;
[SerializeField]
protected Transform m_root;
[SerializeField]
protected CanvasGroup m_cg;
protected override void OnEnable()
{
base.OnEnable();
float progress = 0;
DOTween.To(() => progress, (x) =>
{
progress = x;
m_cg.alpha = Mathf.Lerp(StartAlpha, 1, x);
m_root.localScale = Vector3.Lerp(Vector3.one * StartScale, Vector3.one, x);
}, 1, Duration).SetEase(Ease).SetLink(gameObject, LinkBehaviour.KillOnDisable);
CommandDispatcher.Instance.RegistController(this);
}
protected override void OnDisable()
{
base.OnDisable();
CommandDispatcher.Instance.UnRegistController(this);
}
public void Show(object param)
{
gameObject.SetActive(true);
OnShow(param);
}
public void Close()
{
OnClose();
gameObject.SetActive(false);
}
protected abstract void OnShow(object param);
protected virtual void OnClose() { }
}
}