public void _initialize(SceneUIObject _needhideObj)
 {
     //_camera = MainUICamera.getInstance();
     //_gameObject = _obj;
     _needHideObj = _needhideObj;
     _needHideObj.SetActive(true);
     _openAreaRect = null;
     buildByResID();
     MainUICamera.getInstance().initialize(this);
     //InitAnimIgnoreWindow();
     InitIgnoreLayer();
     //InitNeedHideFreeWindow();
     //KHUIManager.getInstance().Dispatcher.addEventListener(UIMainScene.ON_OPEN_DONE, OnRecieveOpen);
     KHUIManager.getInstance().Dispatcher.addEventListener(UIMainScene.ON_ClOSE, OnRecieveClose);
     KHUIManager.getInstance().Dispatcher.addEventListener(UIEventDef.ON_PLAY_ClOSE_ANIM, OnRecieveClose);
     stayTimeSpan = Time.realtimeSinceStartup + stayIntervel;
 }
 public void ClearUIRef()
 {
     _needHideObj = null;
 }
示例#3
0
        void RefereshMainScene()
        {
            var tMainModel = KHPluginManager.Instance.GetModel("MainUI") as MainUIModel;

            bool tSceneChanged = false;

            //找到当前是否已经存在的纹理层
            Transform tCurSceneInstTrans = null;

            for (int i = 0, max = this.SceneRoot.childCount; i < max; ++i)
            {
                Transform tTrans = this.SceneRoot.GetChild(i);
                if (tTrans.gameObject != this.sceneLogic && !tTrans.gameObject.name.Equals("IPX_BOUND"))
                {
                    if (null == tCurSceneInstTrans)
                    {
                        tCurSceneInstTrans = tTrans;
                    }
                    else
                    {
                        Debuger.LogError("场景层级结构错误, 有多个纹理层");
                    }
                }
            }

            //要销毁的旧场景
            GameObject tOldSceneTransToDestroy = null;

            //当前场景挂着的GameObject
            GameObject tCurSceneInstGo = (tCurSceneInstTrans != null) ? (tCurSceneInstTrans.gameObject) : (null);

            //当前场景所需 (must not null.)
            string tCurSceneResPath = MainSceneLoader.Instance.CurShouldUseSceneResPath();

            if (string.IsNullOrEmpty(tCurSceneResPath))
            {
                Debuger.LogError("当前场景资源无配置");
                return;
            }

            //当前实例指向
            string tCurUsingResPath = MainSceneLoader.Instance.CurUsingResPath;

            //如果当前所需场景和MainUi上已经挂接的实例不相同
            if (tCurSceneResPath != tCurUsingResPath)
            {
                //生成新场景, 此处必定保证非空
                GameObject tScenePrefab = MainSceneLoader.Instance.CurShouldUseSceneGo();
                if (tScenePrefab)
                {
                    KHResource.unLoadRes(tCurSceneResPath, null);
                    KHResource.unLoadRes(tCurUsingResPath, null);
                    GameObject tSceneInstance = GameObject.Instantiate(tScenePrefab) as GameObject;
                    //append
                    tSceneInstance.transform.parent        = this.SceneRoot;
                    tSceneInstance.transform.localPosition = Vector3.zero;
                    tSceneInstance.transform.localScale    = Vector3.one;

                    //销毁旧场景
                    tOldSceneTransToDestroy = tCurSceneInstGo;

                    tCurSceneInstGo = tSceneInstance;
                    MainSceneLoader.Instance.CurUsingResPath  = tCurSceneResPath;
                    MainSceneLoader.Instance.CurUsingInstance = tSceneInstance;

                    tSceneChanged = true;

                    Debuger.Log(string.Format("新场景加载完毕_ tCurSceneResPath:{0} | tCurUsingResPath:{1}",
                                              (tCurSceneResPath != null) ? tCurSceneResPath : "null", (tCurUsingResPath != null) ? tCurUsingResPath : "null"));
                }
                else
                {
                    Debuger.LogError("未读取到场景资源资源");
                    return;
                }
            }
            else
            {
                Debuger.Log(string.Format("场景实例不变_ {0}", (tCurUsingResPath != null) ? tCurUsingResPath : "null"));
                return;
            }

            SceneUIObject tSceneWarrper = new SceneUIObject();

            tSceneWarrper.AddScene(sceneLogic, true);
            if (tCurSceneInstGo != null)
            {
                tSceneWarrper.AddScene(tCurSceneInstGo);
                tSceneWarrper.SetCurrScene(tCurSceneInstGo);
                UIMainScene.getInstance()._initialize(tSceneWarrper);
            }

            //发出场景变换事件
            if (tSceneChanged)
            {
                tMainModel.Dispatcher.dispatchEvent(new KHEvent(MainUIModel.EVT_MAINSCNENE_CHANGED));
            }

            if (tOldSceneTransToDestroy != null)
            {
                GameObject.Destroy(tOldSceneTransToDestroy.gameObject);
            }
        }