示例#1
0
 public void Awake(GameObject gameObject, PanelConfig config)
 {
     this.GameObject    = gameObject;
     this.BindRoot      = new UIBindRoot(gameObject, config.BindViewType);
     this.PanelId       = config.PanelId;
     this.PanelType     = config.PanelType;
     this.PanelLifespan = config.PanelLifespan;
     gameObject.SetActive(false);
 }
示例#2
0
        public async Task Load(PanelId panelId, bool showWhenDone = true, object param = null)
        {
            try
            {
                Panel panel;
                if (this.panelCache.TryGetValue(panelId, out panel))
                {
                    if (panel.PanelLifespan == PanelLifespan.Dynamic)
                    {
                        this.dynamicPanelIds.Remove(panelId);
                    }
                    if (!panel.IsShow && showWhenDone)
                    {
                        panel.OnShow(param);
                    }
                    return;
                }

                if (this.isLoading.Contains(panelId))
                {
                    Debug.LogWarning($"Panel {panelId} is already loading.");
                    return;
                }
                this.isLoading.Add(panelId);
                Type        type   = this.panelTypes[panelId];
                PanelConfig config = this.panelConfigs[panelId];
                await Game.ResourcesComponent.LoadBundleAsync($"{panelId}");

                GameObject go = GameObject.Instantiate((GameObject)Game.ResourcesComponent.GetAsset($"{panelId}", $"{panelId}.prefab"));
                panel = (Panel)ObjectFactory.CreateEntity(type);
                panel.Awake(go, config);
                this.isLoading.Remove(panelId);
                this.panelCache.Add(panelId, panel);
                if (showWhenDone)
                {
                    panel.OnShow(param);
                }
                return;
            }
            catch (Exception e)
            {
                throw new Exception($"{panelId} UI 错误: {e}");
            }
        }
示例#3
0
 PanelConfigAttribute(PanelId panelId, PanelType panelType, Type bindViewType, PanelLifespan panelLifespan = PanelLifespan.Dynamic)
 {
     PanelConfig = new PanelConfig(panelId, panelType, bindViewType, panelLifespan);
 }