57 lines
1.5 KiB
C#
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() { }
|
||
|
}
|
||
|
}
|