ProjectDDD/Assets/_DDD/_Scripts/GameUi/BaseUi.cs
2025-08-14 19:39:27 +09:00

78 lines
1.7 KiB
C#

using System;
using UnityEngine;
namespace DDD
{
public abstract class BaseUi : MonoBehaviour
{
protected CanvasGroup _canvasGroup;
protected GameObject _blockImage;
protected GameObject _panel;
public virtual bool IsBlockingTime => false;
public virtual bool IsOpen => _panel.activeSelf;
[SerializeField] protected bool _enableBlockImage;
protected virtual void Awake()
{
_canvasGroup = GetComponent<CanvasGroup>();
_panel = transform.Find(CommonConstants.Panel).gameObject;
_blockImage = transform.Find(CommonConstants.BlockImage).gameObject;
}
protected virtual void OnEnable()
{
}
protected virtual void Start()
{
TryRegister();
ClosePanel();
}
protected virtual void Update()
{
}
protected virtual void OnDisable()
{
}
protected virtual void OnDestroy()
{
TryUnregister();
}
protected virtual void TryRegister() { }
protected virtual void TryUnregister() { }
public virtual void OpenPanel()
{
if (_enableBlockImage)
{
_blockImage.SetActive(true);
}
_panel.SetActive(true);
}
public virtual void ClosePanel()
{
if (_enableBlockImage)
{
_blockImage.SetActive(false);
}
_panel.SetActive(false);
}
public virtual void SetUiInteractable(bool active)
{
_canvasGroup.interactable = active;
_canvasGroup.blocksRaycasts = active;
}
}
}