com.alicizax.unity.framework/Runtime/UI/UIBase/UIWidget.cs
2025-09-05 19:46:30 +08:00

49 lines
1.3 KiB
C#

using System;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
namespace AlicizaX.UI.Runtime
{
public abstract class UIWidget : UIBase
{
internal UIBase _parent;
internal UIBase Parent => _parent;
public void Open(params System.Object[] userDatas)
{
RefreshParams(userDatas);
InternalOpen().Forget();
}
public void Close()
{
InternalClose().Forget();
}
public void Destroy()
{
Parent.RemoveWidget(this).Forget();
}
}
public abstract class UIWidget<T> : UIWidget where T : UIHolderObjectBase
{
protected T baseui => (T)Holder;
internal sealed override Type UIHolderType => typeof(T);
internal sealed override void BindUIHolder(UIHolderObjectBase holder, UIBase owner)
{
if (_state != UIState.CreatedUI)
throw new InvalidOperationException("UI already Created");
Holder = holder;
_parent = owner;
_canvas = Holder.transform.GetComponent<Canvas>();
_raycaster = Holder.transform.GetComponent<GraphicRaycaster>();
Depth = owner.Depth + 5;
_state = UIState.Loaded;
}
}
}