public void Destroy() { if (_view == null) { return; } _view.CloseCompleteEvent -= OnCloseComplete; if (IsUsingExistingGameObject) { // If the modal's parent is gone then destroy it (we have no where to return it to) - this would occur mostly on scene transition if (originParent == null) { GameObject.Destroy(_view.gameObject); } else { _view.gameObject.transform.SetParent(originParent.transform); } } else { if (_objectPool != null && _objectPool.IsInstanceAllocated(_view.gameObject)) { _objectPool.Release(_view.gameObject); } else { GameObject.Destroy(_view.gameObject); } } _view = null; }
public void Open() { if (_view != null) { return; } if (IsCached) { _view = GetViewFromCache(); } else { _view = CreateView(); } if (_view == null) { return; } IModalDataReceiver <TData> dataReceiver = _view.gameObject.GetComponentOrInterface <IModalDataReceiver <TData> >(); if (dataReceiver != null) { dataReceiver.SetData(Data); } _view.CloseCompleteEvent += OnCloseComplete; OpenHandlerEvent(); _view.Open(); }
/// <summary> /// Init this instance. /// </summary> protected virtual void Init() { if (m_ModaleView == null) { m_ModaleView = GetComponent <AppModalView>(); } m_MainController = CocoMainController.Instance; // ShowPopup (); }
AppModalView GetViewFromCache() { AppModalView ret = null; GameObject modalGo; if (prefab == null) { modalGo = _objectPool.Allocate(prefabPath); } else { modalGo = _objectPool.Allocate(prefab); } if (modalGo == null) { logger.LogError("AppModalHandle", "GetViewFromCache " + modalGo.name + " does not contain AppModalBase component"); GameObject.Destroy(modalGo); CloseCompleteEvent(this); return(ret); } if (modalGo.transform.parent != Parent.transform) { modalGo.transform.SetParent(Parent.transform, false); } ret = modalGo.GetComponent <AppModalView>(); if (ret == null) { logger.LogError("AppModalHandle", "GetViewFromCache " + modalGo.name + " dous not contain AppModalBase component"); GameObject.Destroy(modalGo); CloseCompleteEvent(this); return(ret); } return(ret); }
AppModalView CreateView() { AppModalView ret = null; GameObject modalGo = null; if (IsUsingExistingGameObject) { modalGo = prefab.gameObject; originParent = prefab.transform.parent.gameObject; } else { prefab = _assetManager.GetResource <GameObject> (prefabPath, true); if (prefab == null) { logger.LogError("AppModalHandle", "Open prefab " + prefabPath + " not found"); CloseCompleteEvent(this); return(ret); } modalGo = GameObject.Instantiate(prefab) as GameObject; } modalGo.transform.SetParent(Parent.transform, false); ret = modalGo.GetComponent <AppModalView>(); if (ret == null) { logger.LogError("AppModalHandle", "Open " + modalGo.name + " does not contain AppModalBase component"); GameObject.Destroy(modalGo); CloseCompleteEvent(this); return(ret); } return(ret); }
/// <summary> /// Clean this instance. /// </summary> protected virtual void Clean() { //清除UI信息。 m_ModaleView = null; }