예제 #1
0
    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;
    }
예제 #2
0
    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();
    }
예제 #3
0
        /// <summary>
        /// Init this instance.
        /// </summary>
        protected virtual void Init()
        {
            if (m_ModaleView == null)
            {
                m_ModaleView = GetComponent <AppModalView>();
            }

            m_MainController = CocoMainController.Instance;

//			ShowPopup ();
        }
예제 #4
0
    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);
    }
예제 #5
0
    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);
    }
예제 #6
0
        /// <summary>
        /// Clean this instance.
        /// </summary>
        protected virtual void Clean()
        {
            //清除UI信息。

            m_ModaleView = null;
        }