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}"); } }
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); }