public void Enter(GameStateBase owner)
    {
        underpantNum = 0;
        braNum       = 0;
        m_owner      = (GameStart)owner;
        m_isFailed   = false;
        m_isVectory  = false;
        //
        GameObject prefab = Resources.Load("UI/FightCanvas") as GameObject;
        GameObject go     = GameObject.Instantiate(prefab);

        m_uiCtr          = go.GetComponent <FightUI>();
        m_countDownTotal = GameData.CurLevel.countDown;
        m_countDownCur   = m_countDownTotal;
        m_uiCtr.SetCountDown((int)m_countDownCur, m_countDownTotal);
        //
        GameObject failPrefab = Resources.Load("UI/FailureCanvas") as GameObject;
        GameObject fail       = GameObject.Instantiate(failPrefab);

        m_failCtr = fail.GetComponent <FailureUI>();
        m_failCtr.gameObject.SetActive(false);
        //
        GameObject vectoryPrefab = Resources.Load("UI/VectoryCanvas") as GameObject;
        GameObject vectory       = GameObject.Instantiate(vectoryPrefab);

        m_vectoryCtr = vectory.GetComponent <VectoryUI>();
        m_vectoryCtr.gameObject.SetActive(false);
        //
        GameObject map = new GameObject();

        map.name = "map";
        m_mapCtr = map.AddComponent <MapCtr> ();
        Debug.Log("read map");
        m_mapCtr.ReadMap(GameData.CurLevel.levelFileName);
        //
        CameraFollow cameraCtr = Camera.main.GetComponent <CameraFollow>();

        cameraCtr.FollowTarget = m_mapCtr.Player.transform;
        float mapTopRightX = (m_mapCtr.Map.column - 0.5f) * (float)m_mapCtr.Map.cellWidth;
        float mapTopRightY = (m_mapCtr.Map.row - 0.5f) * (float)m_mapCtr.Map.cellHeight;

        cameraCtr.MaxPos  = new Vector2(mapTopRightX, mapTopRightY);
        cameraCtr.MaxPos -= Camera.main.orthographicSize * new Vector2(Camera.main.aspect, 1);
        Debug.Log("camera max:" + cameraCtr.MaxPos + "," + Camera.main.aspect);
        //Camera.main.GetComponent<CameraFollow>().FollowTarget = m_mapCtr.Player.transform;
        AudioManager.Instance.PlayAudio("bg", true);
    }
 public void Exit(GameStateBase owner)
 {
     AudioManager.Instance.StopAudio("bg");
     m_mapCtr.Clear();
     Debug.Log("clear map");
     if (null != m_uiCtr)
     {
         GameObject.Destroy(m_uiCtr.gameObject);
         m_uiCtr = null;
     }
     if (null != m_failCtr)
     {
         GameObject.Destroy(m_failCtr.gameObject);
         m_failCtr = null;
     }
     if (null != m_vectoryCtr)
     {
         GameObject.Destroy(m_vectoryCtr.gameObject);
         m_vectoryCtr = null;
     }
 }