FM/Assets/Scripts/Base/UI/UIItemBase.cs

46 lines
1.0 KiB
C#

using UnityEngine;
namespace HK
{
public abstract class UIItemBase : MonoBehaviour
{
private GameObjectBinding _uiGameObjectBinding;
public Transform self => gameObject.transform;
public GameObjectBinding uiGameObjectBinding => _uiGameObjectBinding;
// private void Awake()
// {
// OnInit();
// }
internal T GetValue<T>(string name) where T : Component
{
return _uiGameObjectBinding.GetValue<T>(name);
}
public virtual void OnInit()
{
Debug.Log($"init item {name}");
_uiGameObjectBinding = GetComponent<GameObjectBinding>();
}
public virtual void OnShow()
{
gameObject.SetActive(true);
}
public virtual void OnHide()
{
gameObject.SetActive(false);
}
public virtual void OnDispose()
{
Debug.Log($"dispose item {name}");
OnHide();
GameObject.Destroy(this.gameObject);
}
}
}