using System.Collections.Generic; using System.Threading.Tasks; using Common; using Cysharp.Threading.Tasks; using FairyGUI; using HotScripts.GameLauncher; using MainUI; using Plugins.JNGame.System; using SHFrame; namespace HotScripts.GameScripts.FGui { public enum UILayerEnum { View, } public enum UIID { Component1 } /** * UI 配置结构体 */ public struct UIConfigStruct { public readonly string PkgName; public readonly string ResName; public readonly UILayerEnum Layer; public UIConfigStruct(string pkgName, string resName, UILayerEnum layer) { PkgName = pkgName; ResName = resName; Layer = layer; } } public class FGuiManager : SystemBase { private UI_MainUI _mainUI; public static Dictionary UIConfigMap = new(); public static Dictionary LayerMap = new(); public override async Task OnInit() { await UniTask.DelayFrame(1); Log.Debug($"UI 初始化中"); App.EventLauncher.DispatchEvent(HotLauncherEvent.InitSystem,$"UI 初始化中"); BindAll(); BindUI(); await SHFrameModule.UI.AddPackageASync("MainUI"); _mainUI = UI_MainUI.CreateInstance(); _mainUI.MakeFullScreen(); GRoot.inst.AddChildAt(_mainUI,0); _mainUI.Center(); LayerMap.Add(UILayerEnum.View,_mainUI.m_View); } /// /// 绑定UI包 /// private void BindAll() { MainUIBinder.BindAll(); CommonBinder.BindAll(); } /// /// 绑定UI配置 /// private void BindUI() { UIConfigMap.Add(UIID.Component1,new UIConfigStruct("Common", "Component1", UILayerEnum.View)); } public async UniTask Open(UIID id, params object[] param) where TClassType : UIBase, new() { if (!UIConfigMap.ContainsKey(id)) return; var config = UIConfigMap[id]; await SHFrameModule.UI.Open(config.PkgName, config.ResName, LayerMap[config.Layer], param); } } }