void OnDestroy()
    {
        MessageDispatcher.RemoveObserver(InitMap, MessageType.LoadBattleComplete);
        MessageDispatcher.RemoveObserver(MapShowEffectStart, MessageType.MapShowEffectStart);

        if (endlessModeManager != null)
        {
            endlessModeManager.OnDestroy();
            endlessModeManager = null;
        }
        else if (trainingModeManager != null)
        {
            trainingModeManager.OnDestroy();
            trainingModeManager = null;
        }
        else if (tutorialModeManager != null)
        {
            tutorialModeManager.OnDestroy();
            tutorialModeManager = null;
        }

        logicWorld.Release();
        logicWorld = null;

        renderWorld.Release();
        renderWorld = null;
    }
 private void InitPVEMode(BattleType type)
 {
     if (type == BattleType.Survival)
     {
         this.gameObject.AddComponent <LocalBattleMessageManager>();
         endlessModeManager = new EndlessModeManager();
         endlessModeManager.SetMapData(mapDataPVE);
         endlessModeManager.SetLogicWorld(logicWorld);
         endlessModeManager.InitEndlessMode();
     }
     else if (type == BattleType.Tranining)
     {
         this.gameObject.AddComponent <LocalBattleMessageManager>();
         trainingModeManager = new TrainingModeManager();
         trainingModeManager.SetMapData(mapDataPVE);
         trainingModeManager.SetLogicWorld(logicWorld);
         trainingModeManager.InitTrainingMode();
     }
     else if (type == BattleType.Tutorial)
     {
         //TODO: there need add tutorial manager, Dwayne.
         this.gameObject.AddComponent <LocalBattleMessageManager>();
         tutorialModeManager = new TutorialModeManager();
         tutorialModeManager.SetTutorialStage(dataManager.GetTutorialStage());
         mapData1V1.SetTutorialPathPointPosition();
         tutorialModeManager.SetMapData(mapData1V1);              //Temp mapdata if have tutorial mapdata change this.
         tutorialModeManager.SetLogicworld(logicWorld);
         tutorialModeManager.SetMainCamera(this.mainCamera);
         tutorialModeManager.InitTutorialMode();
     }
     else
     {
         DebugUtils.LogError(DebugUtils.Type.Data, "We just have two PVE Mode, Can not find this mode : " + type);
     }
 }