Beispiel #1
0
        public override void OnCloseWindow()
        {
            base.OnCloseWindow();
            KHResource.unLoadRes(curActorPath, OnLoaded);
            for (int i = 0; i < actorEffectList.Count; ++i)
            {
                KHResource.unLoadRes(string.Format("Effect/{0}", actorEffectList[i]), OnEffectLoadedCallback);
            }

            Transform tTrans = CharacterPos;

            if (tTrans != null)
            {
                UIEventListener.Get(tTrans.gameObject).onClick = null;
            }

            if (curActorSnd != null)
            {
                KHAudioManager.RemoveSound(curActorSnd);
            }
            if (this.CurActorSandAni != null)
            {
                this.CurActorSandAni.gameObject.SetActive(false);
                this.CurActorSandAni.StopPlayback();
            }
        }
Beispiel #2
0
        public void OnLoaded(string url, Object obj, LOADSTATUS result, object extra)
        {
            if (obj != null)
            {
                curActorObj = Instantiate(obj as GameObject) as GameObject;

                MainPageActorEffectComp comp = curActorObj.GetComponent <MainPageActorEffectComp>();
                if (comp != null)
                {
                    if (comp.effectIds != null)
                    {
                        actorEffectList.AddRange(comp.effectIds);
                        string effPath = null;
                        //for (int j = 0; j < actorEffectList.Count; ++j )
                        if (actorEffectList.Count > curEffectResIndex)
                        {
                            effPath = string.Format("Effect/{0}", actorEffectList[curEffectResIndex]);
                            KHResource.LoadRes(effPath, OnEffectLoadedCallback);
                        }
                    }
                }

                //var aInfo1 = KHDataManager.CONFIG.NinjaDatas[actorId];
                UpdateActorPrefabSet(actorId, curActorCfg, CharacterPos);
            }
        }
Beispiel #3
0
        /// <summary>
        /// 更新主界面的角色
        /// </summary>
        /// <param name="e"></param>
        void UpdateActor(KHEvent e)
        {
            actorId = int.Parse(e.data.ToString());
            if (!RemoteModel.Instance.NinjaCollection.TryGetNinjaData(actorId, out curActorCfg, false))
            {
                Debuger.LogWarning("更换了不存在的忍者. id=" + actorId);
                return;
            }
            if (curActorObj != null)
            {
                Destroy(curActorObj);
                KHResource.unLoadRes(curActorPath, OnLoaded);

                for (int i = 0; i < actorEffectList.Count; ++i)
                {
                    KHResource.unLoadRes(string.Format("Effect/{0}", actorEffectList[i]), OnEffectLoadedCallback);
                }
            }

            if (curActorCfg == null)
            {
                Debuger.LogWarning("更换了不存在的忍者. id=" + actorId);
                return;
            }
            if (!KHVer.IsOfflineMatch)
            {
                curActorPath = UIActorPrefabPath + curActorCfg.res_id;
                KHResource.LoadRes(curActorPath, OnLoaded);
            }

            actorEffectList.Clear();
            curEffectResIndex = 0;
        }
Beispiel #4
0
 public void OnEffectLoadedCallback(string url, Object obj, LOADSTATUS result, object extra)
 {
     if (curActorObj != null && curActorObj.activeSelf && actorEffectList.Count > 0)
     {
         curEffectResIndex++;
         //actorEffectList.RemoveAt(0);
         if (actorEffectList.Count > curEffectResIndex)
         {
             string path = string.Format("Effect/{0}", actorEffectList[curEffectResIndex]);
             KHResource.LoadRes(path, OnEffectLoadedCallback);
         }
     }
 }
Beispiel #5
0
        private void ResetActorEffects()
        {
            if (curActorObj != null)
            {
                MainPageActorEffectComp comp = curActorObj.GetComponent <MainPageActorEffectComp>();
                if (comp != null)
                {
                    comp.Reset();
                }
            }

            for (int i = 0; i < actorEffectList.Count; ++i)
            {
                KHResource.unLoadRes(string.Format("Effect/{0}", actorEffectList[i]), OnEffectLoadedCallback);
            }
            actorEffectList.Clear();
            curEffectResIndex = 0;
        }
Beispiel #6
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);
            }
        }