void LearnNewSkill()
 {
     if (!isLearningSkill)
     {
         isLearningSkill = true;
         bool skillLeard = false;
         foreach (NewSkill _tempSkill in SplitDataFromServe._heroSkill)
         {
             if (_tempSkill.data["idk"].AsInt == _skillDataInfo.data["idInit"].AsInt)
             {
                 skillLeard = true;
                 break;
             }
         }
         if (skillLeard == false)
         {
             int SPRequire = getSPRequiredToLearn(_skillDataInfo);
             if (CharacterInfo._instance._baseProperties.SkillPoint >= SPRequire)
             {
                 StartCoroutine(ServerAdapter.LearnSkill(CharacterInfo._instance._baseProperties.idHero, CharacterInfo._instance._baseProperties.idCodeHero, _skillDataInfo.data["idInit"].AsInt, _skillDataInfo.data["type"].Value, SPRequire, result =>
                 {
                     if (result.StartsWith("Error"))
                     {
                         isLearningSkill = false;
                         Debug.Log("Do nothing");
                         if (ScrollviewDontDestroy.Instance != null)
                         {
                             ScrollviewDontDestroy.Instance.SetLog("Learn skill fail, result return is " + result);
                         }
                     }
                     else
                     {
                         CharacterInfo._instance._baseProperties.SkillPoint -= SPRequire;
                         var N = SimpleJSON.JSON.Parse(result.ToString());
                         _skillDataInfo.addField("idhk", N["idhk"].AsInt);
                         _skillDataInfo.addField("idk", N["idk"].AsInt);
                         _skillDataInfo.addField("typewear", N["typewear"].AsInt);
                         _skillDataInfo.addField("level", 1);
                         SplitDataFromServe._heroSkill.Add(_skillDataInfo);
                         ShowInfoSkill(_skillDataInfo);
                         //_skillInfoObj.SetActive(false);
                         ListSkillEachClass(ConverClassCharacterEnumToId(CharacterInfo._instance._baseProperties._classCharacter));
                         isLearningSkill = false;
                         if (ScrollviewDontDestroy.Instance != null)
                         {
                             ScrollviewDontDestroy.Instance.SetLog("Learn skill successfully");
                         }
                     }
                 }));
             }
             else
             {
                 PopupErrorController.Instance.ShowErrorWithContent("Don't have enought skillpoint to learn!!");
                 isLearningSkill = false;
             }
         }
         else if (skillLeard == true)
         {
             Debug.Log("Upgrade Skill");
             int SPRequire = getSPRequiredToUpgrade(_skillDataInfo);
             Debug.Log("sp learn skill" + SPRequire);
             if (CharacterInfo._instance._baseProperties.SkillPoint >= SPRequire)
             {
                 StartCoroutine(ServerAdapter.UpLevelSkill(CharacterInfo._instance._baseProperties.idHero, CharacterInfo._instance._baseProperties.idCodeHero, _skillDataInfo.data["idhk"].AsInt, _skillDataInfo.data["level"].AsInt, SPRequire, result =>
                 {
                     if (result.StartsWith("Error"))
                     {
                         Debug.Log("Do nothing");
                         isLearningSkill = false;
                         if (ScrollviewDontDestroy.Instance != null)
                         {
                             ScrollviewDontDestroy.Instance.SetLog("Upgrade skill fail, result return is " + result);
                         }
                     }
                     else
                     {
                         CharacterInfo._instance._baseProperties.SkillPoint -= SPRequire;
                         var N = SimpleJSON.JSON.Parse(result.ToString());
                         _skillDataInfo.addField("level", _skillDataInfo.data["level"].AsInt + 1);
                         ShowInfoSkill(_skillDataInfo);
                         ListSkillEachClass(ConverClassCharacterEnumToId(CharacterInfo._instance._baseProperties._classCharacter));
                         isLearningSkill = false;
                         if (ScrollviewDontDestroy.Instance != null)
                         {
                             ScrollviewDontDestroy.Instance.SetLog("Upgrade skill successfully");
                         }
                     }
                 }));
             }
             else
             {
                 PopupErrorController.Instance.ShowErrorWithContent("Don't have enought skillpoint to learn!!");
                 isLearningSkill = false;
             }
         }
     }
 }