AlicizaX/Client/Packages/com.alicizax.unity.ui/Runtime/UI/UIBase/UIWindow.cs

39 lines
1.4 KiB
C#
Raw Normal View History

2025-03-04 18:40:14 +08:00
using System;
using System.Reflection;
2025-04-28 19:45:45 +08:00
using AlicizaX;
2025-03-04 18:40:14 +08:00
using UnityEngine;
using UnityEngine.UI;
namespace AlicizaX.UI.Runtime
{
2025-04-28 19:45:45 +08:00
public abstract class UIWindow<T> : UIBase where T : UIHolderObjectBase
2025-03-04 18:40:14 +08:00
{
2025-04-28 19:45:45 +08:00
protected T baseui => (T)Holder;
2025-03-04 18:40:14 +08:00
2025-07-11 21:00:00 +08:00
internal sealed override Type UIHolderType => typeof(T);
2025-03-04 18:40:14 +08:00
2025-04-28 19:45:45 +08:00
protected void CloseSelf(bool forceClose = false)
{
ModuleSystem.GetModule<IUIModule>().CloseUI(RuntimeTypeHandler, forceClose);
}
2025-03-04 18:40:14 +08:00
2025-07-11 21:00:00 +08:00
internal sealed override void BindUIHolder(UIHolderObjectBase holder, UIBase owner)
2025-04-28 19:45:45 +08:00
{
if (_state != UIState.CreatedUI)
throw new InvalidOperationException("UI already Created");
2025-03-04 18:40:14 +08:00
Holder = holder;
_canvas = Holder.transform.GetComponent<Canvas>();
2025-04-28 19:45:45 +08:00
_canvas.overrideSorting = true;
2025-03-04 18:40:14 +08:00
_raycaster = Holder.transform.GetComponent<GraphicRaycaster>();
Holder.RectTransform.localPosition = Vector3.zero;
Holder.RectTransform.pivot = new Vector2(0.5f, 0.5f);
Holder.RectTransform.anchorMin = Vector2.zero;
Holder.RectTransform.anchorMax = Vector2.one;
Holder.RectTransform.offsetMin = Vector2.zero;
Holder.RectTransform.offsetMax = Vector2.zero;
Holder.RectTransform.localScale = Vector3.one;
_state = UIState.Loaded;
}
}
}