using System; using System.Reflection; using AlicizaX; using UnityEngine; using UnityEngine.UI; namespace AlicizaX.UI.Runtime { public abstract class UIWindow : UIBase where T : UIHolderObjectBase { protected T baseui => (T)Holder; internal sealed override Type UIHolderType => typeof(T); /// /// 关闭自身 如果存在缓存 则会强制从缓存中移除 /// protected void ForceCloseSlef() { ModuleSystem.GetModule().CloseUI(RuntimeTypeHandler, true); } protected void CloseSelf() { ModuleSystem.GetModule().CloseUI(RuntimeTypeHandler, false); } internal sealed override void BindUIHolder(UIHolderObjectBase holder, UIBase owner) { if (_state != UIState.CreatedUI) throw new InvalidOperationException("UI already Created"); Holder = holder; _canvas = Holder.transform.GetComponent(); _canvas.overrideSorting = true; _raycaster = Holder.transform.GetComponent(); 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; } } }