Files
FlowScope/Packages/com.flowscope.gamecore/Runtime/UI/UIPanelBase.cs
2026-06-04 14:54:49 +08:00

32 lines
706 B
C#

using R3;
using UnityEngine;
namespace FlowScope.UI
{
internal interface IUIPanel
{
GameObject gameObject { get; }
Transform transform { get; }
void Unbind();
}
public abstract class UIPanelBase<TViewModel> : MonoBehaviour, IUIPanel
{
protected TViewModel ViewModel { get; private set; }
protected CompositeDisposable Disposables { get; } = new();
public void Bind(TViewModel viewModel)
{
ViewModel = viewModel;
OnBind(viewModel);
}
public virtual void Unbind()
{
Disposables.Clear();
}
protected abstract void OnBind(TViewModel viewModel);
}
}