private void ClearScene() { if (activeScene != null) { activeScene.LeaveScene(); GameObject.Destroy(activeScene.gameObject); activeScene = null; } }
//执行进入场景的代码逻辑 IEnumerator EnterScene(GCEnterScene sceneData) { Log.Sys("EnterNextScene is " + nextSceneId); var sdata = CopyController.copyController.GetLevelInfo(nextSceneId); NextScene = sdata; //删除旧的场景中的玩家数据 if (activeScene != null) { activeScene.LeaveScene(); GameObject.Destroy(activeScene.gameObject); } activeScene = CScene.CreateScene(sdata); activeScene.Init(); activeScene.EnterScene(); //Init Camera Log.Sys("Load Scene Name is " + sdata.SceneName); //等待加载静态场景资源 AsyncOperation async = Application.LoadLevelAsync(sdata.SceneName); loadUI.async = async; loadUI.ShowLoad("等待"); while (!async.isDone) { yield return(null); } //InitCamera After Load Scene //Scene Load Finish Then Load MainCamera if (CameraController.cameraController == null) { Log.Sys("CreateMainCamera"); var mc = Resources.Load <GameObject> ("levelPublic/MainCamera"); Instantiate(mc); // as GameObject; var lm = Resources.Load <GameObject>("LightCamera"); var lm2 = Instantiate(lm) as GameObject; lm2.GetComponent <Camera>().orthographicSize = GraphInit.Instance.lightShadowCameraSize; var sc = Instantiate(Resources.Load <GameObject>("levelPublic/ShadowCamera")) as GameObject; sc.GetComponent <Camera>().orthographicSize = GraphInit.Instance.lightShadowCameraSize; } if (BattleManager.battleManager == null) { var g = new GameObject("BattleManager"); g.AddComponent <BattleManager>(); } { var g = new GameObject("NpcManager"); g.AddComponent <NpcManager>(); } activeScene.ManagerInitOver(); Log.Sys("Cameramain " + Camera.main); MyEventSystem.myEventSystem.PushEvent(MyEvent.EventType.EnterScene); //正在进入一个场景 yield return(null); var g1 = new GameObject("StreamLoadLevel"); var loader = g1.AddComponent <StreamLoadLevel>(); var water = g1.AddComponent <WaterEnvLoader>(); var netLoader = g1.AddComponent <NetworkLoadZone>(); yield return(StartCoroutine(loader.LoadFirstRoom())); var start = GameObject.Find("PlayerStart"); CameraController.cameraController.TracePositon(start.transform.position); NetDebug.netDebug.AddConsole("LoadScene Finish start Init UI"); CreateUI(); NetDebug.netDebug.AddConsole("CreateMyPlayer"); //场景传送点 CreateMyPlayer(); //load Success //loadUI.Hide (null); NetDebug.netDebug.AddConsole("Init Player Over Next"); station = WorldStation.Enter; //场景其它初始化交给LevelInit NetDebug.netDebug.AddConsole("WorldManager:: InitLevel"); CreateLevelInit(); //初始化缓存的场景玩家 //ObjectManager.objectManager.InitCache (); NetDebug.netDebug.AddConsole("Init World Finish"); StartCoroutine(loader.LoadRoomNeibor()); }
/// <summary> /// 初始化各个子模块 /// </summary> public void InitData() { CScene.InitStatic(); var g = gameObject; if (NotifyUIManager.Instance == null) { g.AddComponent <NotifyUIManager>(); } if (BackPack.backpack == null) { var back = new GameObject("backpack"); back.transform.parent = transform; back.AddComponent <BackPack>(); } if (SkillDataController.skillDataController == null) { var skill = new GameObject("skill"); skill.transform.parent = transform; skill.AddComponent <SkillDataController>(); } if (CopyController.copyController == null) { var copy = new GameObject(); copy.AddComponent <CopyController>(); copy.transform.parent = g.transform; } if (WorldManager.worldManager == null) { var world = new GameObject("WorldManager"); world.transform.parent = g.transform; world.AddComponent <WorldManager>(); } if (ObjectManager.objectManager == null) { var go = new GameObject("ObjectManager"); go.AddComponent <ObjectManager>(); } if (CursorManager.cursorManager == null) { var t = CursorManager.cursorManager; t.transform.parent = g.transform; } characters = new List <GameObject>(); if (saveData == null) { saveData = new JSONClass(); saveData ["characters"] = new JSONArray(); saveData ["lastSelect"].AsInt = -1; } /* * if (MyEventSystem.myEventSystem == null) { * var evt = new GameObject(); * evt.name = "EventSystem"; * evt.AddComponent<MyEventSystem>(); * } * MyEventSystem.myEventSystem.transform.parent = g.transform; */ MyEventSystem.myEventSystem.InitEventHandler(); /* * if (TeamController.teamController == null) * { * var tempObj = new GameObject("TeamController"); * tempObj.AddComponent<TeamController>(); * tempObj.transform.parent = transform; * } */ if (BuffManager.buffManager == null) { var tempObj = new GameObject("BuffManager"); tempObj.AddComponent <BuffManager>(); tempObj.transform.parent = transform; } var eff = new GameObject("EffectMainNode"); eff.transform.parent = transform; EffectMainNode = eff; InitYet = true; }