void initSinglePlayerSlots(string character)
    {
        if (playerUnitSlots.ContainsKey(character))
        {
            playerUnitSlots.Add(character, new PlayerUnitSlot[Player.SUMMON_SLOT_NUM]);
        }
        else
        {
            playerUnitSlots[character] = new PlayerUnitSlot[Player.SUMMON_SLOT_NUM];
        }

        if (playerSkillSlots.ContainsKey(character))
        {
            playerSkillSlots.Add(character, new PlayerSkillSlot[Player.SKILL_SLOT_NUM]);
        }
        else
        {
            playerSkillSlots[character] = new PlayerSkillSlot[Player.SKILL_SLOT_NUM];
        }


        for (i = 0; i < 5; ++i)
        {
            playerUnitSlots[character][i] = new PlayerUnitSlot();
        }
        for (i = 0; i < 3; ++i)
        {
            playerSkillSlots[character][i] = new PlayerSkillSlot();
        }
    }
    IEnumerator updateCharacter()
    {
        if (hero != null)
        {
            GameManager.me.characterManager.cleanMonster(hero);
        }
        for (int i = 0; i < 5; ++i)
        {
            if (units[i] != null)
            {
                GameManager.me.characterManager.cleanMonster(units[i]);
            }
            units[i] = null;
        }

        GameDataManager.instance.loadDefaultModelData();

        while (GameDataManager.instance.isCompleteLoadModel == false)
        {
            yield return(null);
        }

        while (GameDataManager.instance.isCompleteLoadLobbyMap == false)
        {
            yield return(null);
        }


        hero = (Player)GameManager.me.characterManager.getMonster(true, true, _selectHeroId, false);     //  (Player)Instantiate(GameManager.me.player);
        hero.init(_currentGamePlayerData, true, false);

        hero.pet = (Pet)GameManager.me.characterManager.getMonster(false, true, _currentGamePlayerData.partsVehicle.parts.resource.ToUpper(), false);
        hero.pet.init(hero);

        hero.setParent(heroParent);
        hero.cTransform.localScale    = new Vector3(1, 1, 1);
        hero.cTransform.localPosition = new Vector3(0, 0, 0);

        hero.setPositionCtransform(heroParent.position);

        Quaternion q = hero.tf.localRotation;
        Vector3    v = q.eulerAngles;

        v.x           = 0; v.y = 0; v.z = 0;
        q.eulerAngles = v;
        hero.state    = Monster.NORMAL;

        hero.pet.collider.enabled = true;
        hero.pet.collider.name    = "PET";

        hero.pet.tf.localRotation         = q;
        hero.pet.cTransform.localRotation = q;


        for (int i = 0; i < 5; ++i)
        {
            if (_playerUnitSlots[i].isOpen == false)
            {
                continue;
            }

            units[i]           = GameManager.me.characterManager.getMonster(false, true, _playerUnitSlots[i].unitData.resource, false);
            units[i].isEnabled = true;
            CharacterUtil.setRare(_playerUnitSlots[i].unitData.rare, units[i]);
            units[i].setParent(unitParent[i]);

            units[i].cTransform.localPosition = new Vector3(0, 0, 0);

            PlayerUnitSlot pus = _playerUnitSlots[i];
            units[i].init(pus.unitInfo.transcendData, pus.unitInfo.transcendLevel, pus.unitData.id, true, Monster.TYPE.UNIT);

            units[i].normalCollider.enabled = true;
            units[i].name = "UNIT" + i;
            units[i].shadow.gameObject.SetActive(true);
            units[i].initShadowAndEffectSize();
            units[i].startAction();
            units[i].setIdleAndFreeze(true);

            if (units[i].ani.GetClip(Monster.NORMAL_LOBBY) != null)
            {
                units[i].state = Monster.NORMAL_LOBBY;
            }
            else
            {
                units[i].state = Monster.NORMAL;
            }

            units[i].renderAniRightNow();

            q = units[i].transform.localRotation;
            v = q.eulerAngles;

            v.x           = 0; v.y = 0; v.z = 0;
            q.eulerAngles = v;
            units[i].transform.localRotation  = q;
            units[i].cTransform.localRotation = q;

            GameManager.me.effectManager.checkUnitBodyEffect(units[i], true);
        }

        lobbyCharacterPositionSetter.changePosition(units);

        nowZoomSize = LobbyCharacterPosition.defaultZoomSize;

//		if(LobbyCharacterPosition.hasOutsidePosition) nowZoomSize = 1.0f;
//		else nowZoomSize = 0.72f;

        chracterCamera.fieldOfView = 15.0f * nowZoomSize;

        _updateCharacterComplete = true;
    }