OvertakingLegend/Assets/UIFrameWork/Runtime/UIBaseClass.cs

146 lines
3.0 KiB
C#

using UnityEngine;
using UnityEngine.Events;
/// <summary>
/// 面板基类
/// </summary>
public class UIBaseClass : MonoBehaviour
{
/// <summary>
/// 关闭回调
/// </summary>
private UnityAction hideCallback;
/// <summary>
/// 节点画布组
/// </summary>
private CanvasGroup nodeCG;
/// <summary>
/// 动效动画状态机
/// </summary>
protected Animation showHideAnimation;
/// <summary>
/// 动效动画状态机
/// </summary>
protected Animator showHideAnimator;
protected virtual void Awake()
{
Init();
}
/// <summary>
/// 打开
/// </summary>
public virtual void OnShow()
{
}
/// <summary>
/// 关闭
/// </summary>
public virtual void OnHide()
{
}
/// <summary>
/// 删除
/// </summary>
public virtual void OnDelete()
{
}
/// <summary>
/// 初始化
/// </summary>
private void Init()
{
nodeCG = transform.Find("Node").GetComponent<CanvasGroup>();
GetComponent<Canvas>().worldCamera=UIManager.Instance.uICamera;
if (transform.TryGetComponent(out Animation animation))
{
this.showHideAnimation = animation;
}
if (transform.TryGetComponent(out Animator animator))
{
this.showHideAnimator = animator;
}
}
/// <summary>
/// 全部失效或开启
/// </summary>
public void AllLapseInitiate(bool isAllLapse)
{
nodeCG.interactable = isAllLapse;
}
/// <summary>
/// 关闭自己
/// </summary>
protected void HideMe()
{
UIManager.Instance.HideUI(this.name);
}
/// <summary>
/// 删除自己
/// </summary>
protected void DeleteMe()
{
UIManager.Instance.DeleteUI(this.name);
}
/// <summary>
/// 打开面板动画
/// </summary>
public virtual void ShowPanelAnimation()
{
if (showHideAnimation != null)
{
showHideAnimation.Play("ShowUI");
}
if(showHideAnimator!=null)
{
showHideAnimator.Play("ShowUI");
}
}
/// <summary>
/// 关闭面板
/// </summary>
/// <param name="hideCall">关闭后干什么事</param>
public virtual void HidePanel(UnityAction hideCallback)
{
this.hideCallback= hideCallback;
if (showHideAnimation == null&&showHideAnimator==null)
{
this.hideCallback?.Invoke();
}
else
{
if (showHideAnimation != null)
{
showHideAnimation.Play("HideUI");
}
if(showHideAnimator!=null)
{
showHideAnimator.Play("HideUI");
}
}
}
/// <summary>
/// 关闭回调
/// </summary>
public void HideCallback()
{
this.hideCallback?.Invoke();
}
}