using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; namespace TyphoonUI { /// /// UI管理器 /// public static class UIManger { /// /// 实现类 /// private static UIManagerImpl Impl => UIManagerImpl.Instance; /// /// UICamera /// public static UICamera UICamera => Impl.UICamera; /// /// EventSystem /// public static EventSystem EventSystem => Impl.EventSystem; /// /// 画布 /// public static Dictionary Canvases => Impl.Canvases; /// /// 层级面板集合 /// public static Dictionary> LayerPanels => Impl.LayerPanels; /// /// UI面板 /// public static Dictionary Panels => Impl.Panels; /// /// UI绑定器 /// public static AbstractBinding Binding => Impl.Binding; /// /// UI 资源包 /// public static Dictionary UIPackages => Impl.UIPackages; /// /// 是否有实例 /// public static bool HasInstance() => UIManagerImpl.HasInstance(); /// /// 初始化 /// public static void Initialize() => Impl.Initialize(); /// /// 获取层级画布 /// /// 层级 public static UICanvas GetCanvas(CanvasLayer layer) => Impl.GetCanvas(layer); /// /// 获取资源预制物 /// /// ui包 /// 资源名 public static GameObject GetSourcePrefab(string package, string sourceName) => Impl.GetSourcePrefab(package, sourceName); /// /// 实例面板 /// /// 面板类 public static T CreatePanel() where T : UIPanel => Impl.CreatePanel(); /// /// 实例化组件 /// /// 组件类 public static T CreateComponent() where T : UIComponent => Impl.CreateComponent(); /// /// 实例化组件 /// /// 父节点 /// 组件类型 /// public static T CreateComponent(Transform parent) where T : UIComponent => Impl.CreateComponent(parent); /// /// 构建UI组件 /// /// UiObject 视图节点 /// /// public static T CreateComponent(GameObject viewObjectRoot) where T : UIComponent => UIManagerImpl.CreateComponent(viewObjectRoot); /// /// 打开面板,如果未实例化会自动创建,注意UIPackage资源先注入 /// /// 传递的数据 /// 面板类型 public static void OpenPanel(object data = null) where T : UIPanel => Impl.OpenPanel(data); /// /// 关闭面板 /// /// 传递的数据 /// 面板类型 public static void ClosePanel(object data = null) where T : UIPanel => Impl.ClosePanel(data); /// /// 关闭所有面板 /// /// 忽略的层级 /// 忽略的面板 public static void CloseAll(CanvasLayer[] ignoreLayers = null, string[] panels = null) => Impl.CloseAll(ignoreLayers, panels); /// /// 销毁面板 /// /// 面板类 /// 销毁成功返回true,失败或不存在可销毁实例返回false public static bool DestroyPanel() where T : UIPanel => Impl.DestroyPanel(); /// /// 销毁面板 /// /// 面板类名(FullName) /// 销毁成功返回true,失败或不存在可销毁实例返回false public static bool DestroyPanel(string panelScript) => Impl.DestroyPanel(panelScript); /// /// 获取面板 /// /// public static T GetPanel() where T : UIPanel => Impl.GetPanel(); /// /// 获取面板 /// /// 面吧类名(FullName) /// public static UIPanel GetPanel(string panelScript) => Impl.GetPanel(panelScript); /// /// 是否存在面板 /// /// 面板类型 public static bool HasPanel() where T : UIPanel => Impl.HasPanel(); /// /// 是否存在面板 /// /// 面板类名(FullName) /// public static bool HasPanel(string panelScript) => Impl.HasPanel(panelScript); /// /// 获取层级画布下的面板 /// /// 画布层级 public static List GetCanvasPanels(CanvasLayer layer) => Impl.GetCanvasPanels(layer); /// /// 注入资源包 /// /// ui资源包 public static void LoadPackage(UIPackage package) => Impl.LoadPackage(package); /// /// 卸载资源 /// /// ui资源包 public static void UnloadPackage(string packageName) => Impl.UnloadPackage(packageName); /// /// 获取资源包 /// /// ui资源包 public static UIPackage GetPackage(string packageName) => Impl.GetPackage(packageName); /// /// 层级画布面板排序(按binding item优先级) /// public static void SortCanvasPanelsInHierarchy(CanvasLayer canvasLayer) => Impl.SortCanvasPanelsInHierarchy(canvasLayer); /// /// 通知语言发生变化 /// public static void NoticeLanguageChanged() => Impl.NoticeLanguageChanged(); } }