Exemplo n.º 1
0
        public IEnumerator CreateView(IUIPanel uiPanel)
        {
            string assetPath = uiPanel.GetPanelAssetPath();

            Logger.d($"[DeftauleUISystem.Create] UI预制体加载 assetPath={assetPath}");
            var loader = Addressables.InstantiateAsync(assetPath, _uiPanelRoot, false);

            yield return(loader);

            if (loader.Status == AsyncOperationStatus.Succeeded)
            {
                UIPanelData panelData = new UIPanelData();
                _uiPanelDatas.Add(panelData);
                panelData.PanelGO = loader.Result;
                panelData.UIPanel = uiPanel;

                panelData.PanelGO.GetComponent <Canvas>().enabled           = false;
                panelData.PanelGO.GetComponent <GraphicRaycaster>().enabled = false;
                uiPanel.OnInit(loader.Result);
            }
            else
            {
                Logger.e($"[DeftauleUISystem.Create] UI预制体加载失败 assetPath={assetPath}");
            }
        }
Exemplo n.º 2
0
        public void ReleaseView(IUIPanel uiPanel)
        {
            Logger.d($"[DeftauleUISystem.ReleaseView] {uiPanel.GetPanelAssetPath()}");
            UIPanelData panelData = _uiPanelDatas.Find((uiPanelDataItem) => { return(uiPanelDataItem.UIPanel == uiPanel); });

            uiPanel.OnRelease();
            GameObject.Destroy(panelData.PanelGO);
            panelData.PanelGO = null;
            panelData.UIPanel = null;
            _uiPanelDatas.Remove(panelData);
        }