Bläddra i källkod

优化代码,修改bug

lcn 5 månader sedan
förälder
incheckning
3a73061dad

+ 53 - 8
Assets/Res/UI/SkillUIComponent.prefab

@@ -258,6 +258,7 @@ GameObject:
   - component: {fileID: 5231644514269099707}
   - component: {fileID: 4396069779853996381}
   - component: {fileID: 8666913713153389831}
+  - component: {fileID: 4297473089771174117}
   m_Layer: 0
   m_HasEditorInfo: 1
   m_Name: txSkillLv3Add
@@ -282,8 +283,8 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 344, y: -113}
-  m_SizeDelta: {x: 688, y: 30}
+  m_AnchoredPosition: {x: 344, y: -54}
+  m_SizeDelta: {x: 688, y: 0}
   m_Pivot: {x: 0.5, y: 1}
 --- !u!222 &4396069779853996381
 CanvasRenderer:
@@ -327,6 +328,20 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: "\u5927\u86C7\u7B2C\u4E00\u4E2A\u6280\u80FD\uFF0C\u5BF9\u654C\u4EBA\u7167\u6210\u4F24\u5BB3\uFF0C\u5E76\u5C06\u654C\u4EBA\u51FB\u9000\u4E00\u6BB5\u8DDD\u79BB"
+--- !u!114 &4297473089771174117
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1806108059677379203}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_HorizontalFit: 0
+  m_VerticalFit: 2
 --- !u!1 &1829847571812348693
 GameObject:
   m_ObjectHideFlags: 0
@@ -338,6 +353,7 @@ GameObject:
   - component: {fileID: 8870045557280260565}
   - component: {fileID: 7568156432243018947}
   - component: {fileID: 6490593083367128315}
+  - component: {fileID: 5596254405228865015}
   m_Layer: 0
   m_HasEditorInfo: 1
   m_Name: txSkillLv2Add
@@ -362,8 +378,8 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 344, y: -83}
-  m_SizeDelta: {x: 688, y: 30}
+  m_AnchoredPosition: {x: 344, y: -27}
+  m_SizeDelta: {x: 688, y: 0}
   m_Pivot: {x: 0.5, y: 1}
 --- !u!222 &7568156432243018947
 CanvasRenderer:
@@ -407,6 +423,20 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: "\u5927\u86C7\u7B2C\u4E00\u4E2A\u6280\u80FD\uFF0C\u5BF9\u654C\u4EBA\u7167\u6210\u4F24\u5BB3\uFF0C\u5E76\u5C06\u654C\u4EBA\u51FB\u9000\u4E00\u6BB5\u8DDD\u79BB"
+--- !u!114 &5596254405228865015
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1829847571812348693}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_HorizontalFit: 0
+  m_VerticalFit: 2
 --- !u!1 &1903911127976497113
 GameObject:
   m_ObjectHideFlags: 0
@@ -487,7 +517,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: "\u5927\u86C7\u7B2C\u4E00\u4E2A\u6280\u80FD\uFF0C\u5BF9\u654C\u4EBA\u7167\u6210\u4F24\u5BB3\uFF0C\u5E76\u5C06\u654C\u4EBA\u51FB\u9000\u4E00\u6BB5\u8DDD\u79BB1\n\u5927\u86C7\u7B2C\u4E00\u4E2A\u6280\u80FD\uFF0C\u5BF9\u654C\u4EBA\u7167\u6210\u4F24\u5BB3\uFF0C\u5E76\u5C06\u654C\u4EBA\u51FB\u9000\u4E00\u6BB5\u8DDD\u79BB2\n\u5927\u86C7\u7B2C\u4E00\u4E2A\u6280\u80FD\uFF0C\u5BF9\u654C\u4EBA\u7167\u6210\u4F24\u5BB3\uFF0C\u5E76\u5C06\u654C\u4EBA\u51FB\u9000\u4E00\u6BB5\u8DDD\u79BB3"
+  m_Text: "\u5927\u86C7\u7B2C\u4E00\u4E2A\u6280\u80FD\uFF0C\u5BF9\u654C\u4EBA\u7167\u6210\u4F24\u5BB3\uFF0C\u5E76\u5C06\u654C\u4EBA\u51FB\u9000\u4E00\u6BB5\u8DDD\u79BB1"
 --- !u!114 &2292706173671014847
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -550,7 +580,7 @@ MonoBehaviour:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 2456279290738976765}
-  m_Enabled: 0
+  m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
   m_Name: 
@@ -1424,6 +1454,7 @@ GameObject:
   - component: {fileID: 8233403908056166009}
   - component: {fileID: 5946602135712632191}
   - component: {fileID: 3059363093775096407}
+  - component: {fileID: 1273081727955350729}
   m_Layer: 0
   m_HasEditorInfo: 1
   m_Name: txSkillLv4Add
@@ -1448,8 +1479,8 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 344, y: -143}
-  m_SizeDelta: {x: 688, y: 30}
+  m_AnchoredPosition: {x: 344, y: -81}
+  m_SizeDelta: {x: 688, y: 0}
   m_Pivot: {x: 0.5, y: 1}
 --- !u!222 &5946602135712632191
 CanvasRenderer:
@@ -1493,6 +1524,20 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: "\u5927\u86C7\u7B2C\u4E00\u4E2A\u6280\u80FD\uFF0C\u5BF9\u654C\u4EBA\u7167\u6210\u4F24\u5BB3\uFF0C\u5E76\u5C06\u654C\u4EBA\u51FB\u9000\u4E00\u6BB5\u8DDD\u79BB"
+--- !u!114 &1273081727955350729
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7033063365279083689}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_HorizontalFit: 0
+  m_VerticalFit: 2
 --- !u!1 &7605196524417204618
 GameObject:
   m_ObjectHideFlags: 0

+ 101 - 0
Assets/Scripts/Core/Utility/GlobalParam.cs

@@ -1,3 +1,4 @@
+
 namespace Core.Utility
 {
     public class GlobalParam
@@ -24,5 +25,105 @@ namespace Core.Utility
         /// 普攻技能组
         /// </summary>
         public static int Normal_Attack_Skill_Group_ID = 1001;
+
+        
+        // /// <summary>
+        // /// onlyUnLock=true, 获取已解锁的最高等级的技能
+        // /// onlyUnLock=false,获取已解锁的最高等级的技能,若都没有解锁,则获取未解锁的1级技能
+        // /// </summary>
+        // /// <param name="groupID">技能组</param>
+        // /// <param name="level">英雄等级</param>
+        // /// <param name="star">英雄星级</param>
+        // /// <param name="onlyUnLock">ture=只返回解锁的</param>
+        // /// <returns></returns>
+        // public static SkillConfig GetHighestLevelOr1(int groupID, int level, int star, bool onlyUnLock = false)
+        // {
+        //     SkillConfig skillConfig = new SkillConfig();
+        //     
+        //     int lv = 0;
+        //     for(int i = 0; i <  PlayerManager.Instance.groupSkillDIc[groupID].Count; i++)
+        //     {
+        //         SkillConfig config = PlayerManager.Instance.groupSkillDIc[groupID][i];
+        //
+        //         if (i == 0 && !onlyUnLock)
+        //         {
+        //             skillConfig = config;
+        //         }
+        //         
+        //         // if (config.isUnLock && config.skillConfig.level > lv)
+        //         if(IsUnLockSkill(level, star, config.ID) && config.level > lv)
+        //         {
+        //             lv = config.level;
+        //             skillConfig = config;
+        //         }
+        //     }
+        //     return skillConfig;
+        // }
+        //
+        // /// <summary>
+        // /// 技能是否解锁
+        // /// </summary>
+        // /// <param name="level">英雄等级</param>
+        // /// <param name="star">英雄星级</param>
+        // /// <param name="skillID">技能id</param>
+        // /// <returns></returns>
+        // public static bool IsUnLockSkill(int level, int star, int skillID)
+        // {
+        //     bool isUnLock = false;
+        //     if (skillID == GlobalParam.Normal_Attack_Skill_Group_ID)
+        //     {
+        //         isUnLock = true;
+        //     }
+        //     else
+        //     {
+        //         //整体可能有点绕,后面再看优化不
+        //         
+        //         //取技能ID的后两位,后两位是技能解锁表SkillUpConfig的ID, 取这个ID来判断,这个技能是否解锁,以及还差多少差解锁
+        //         int skillUpID = skillID % 100;
+        //         SkillUpConfig skillUpConfig = ConfigComponent.Instance.Get<SkillUpConfig>(skillUpID);
+        //
+        //         //取个位
+        //         int gw = skillUpID % 10;
+        //         
+        //         int skillUpID1 = -1;
+        //         //当个位>1时,需要额外判断一下,技能的1级是否已经解锁(可能1级是星级解锁)
+        //         //避免出现,技能是5星解锁解锁1级,200级解锁2级,但玩家现在4星,201级,就不该解锁2级,因为星级不够
+        //         if (gw > 1)
+        //         {
+        //             //技能1级的解锁ID,例如: 33 - 3 + 1 = 31, 31就是技能1级的解锁条件id
+        //             skillUpID1 = skillUpID - gw + 1;
+        //         }
+        //         
+        //         //等级解锁
+        //         if (skillUpConfig.upType == 1)
+        //         {
+        //             SkillUpConfig skillUpConfig1 = new SkillUpConfig();
+        //             //准备判断,该技能1级时,是否为星级解锁
+        //             if (skillUpID1 > 0)
+        //             {
+        //                 skillUpConfig1 = ConfigComponent.Instance.Get<SkillUpConfig>(skillUpID1);
+        //             }
+        //
+        //             //如果技能的第一级需要星级解锁,需额外判断一下星级是否达到
+        //             bool isStarOk = skillUpConfig1.upType != 2 || star > skillUpConfig1.upValue;
+        //             
+        //
+        //             if (level >= skillUpConfig.upValue && isStarOk)
+        //             {
+        //                 isUnLock = true;
+        //             }
+        //         }
+        //         //星级解锁
+        //         else if (skillUpConfig.upType == 2)
+        //         {
+        //             if (star >= skillUpConfig.upValue)
+        //             {
+        //                 isUnLock = true;
+        //             }
+        //         }
+        //     }
+        //
+        //     return isUnLock;
+        // }
     }
 }

+ 24 - 6
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroInfo.cs

@@ -13,7 +13,6 @@ using Utility;
 public class CombatHeroInfo
 {
     
-    public SkillData SkillData;
     public int modelID;
     public EncryptionLong hp = new EncryptionLong();
     public EncryptionLong defense = new EncryptionLong();
@@ -54,8 +53,9 @@ public class CombatHeroInfo
     public string modelName;
     public float maxDis=2;
     public float maxDisTo=2*2;
-    public int[] skillId;
-    public List<SkillConfig> skillConfigs;
+    // public int[] skillId;
+    // public List<SkillConfig> skillConfigs;
+    public List<int> unLockSkills;
     public bool isGpu;
     public string heroName;
 
@@ -107,12 +107,30 @@ public class CombatHeroInfo
 
         attSpeed = (EncryptionFloat)modelConfig.speed_atk;
         crit = (EncryptionFloat)modelConfig.crit;
-        skillId = modelConfig.skillID;
+        // skillId = modelConfig.skillID;
         modelName = modelConfig.model;
         isGpu = modelConfig.isUseGpu;
         maxDis = modelConfig.range_atk;
         maxDisTo = maxDis * maxDis;
         heroType = modelConfig.heroType;
+
+        CalUnLockSkill();
+    }
+
+    /// <summary>
+    /// 计算解锁技能
+    /// </summary>
+    protected void CalUnLockSkill()
+    {
+        unLockSkills = new List<int>();
+        for (int i = 0; i < modelConfig.skillID.Length; i++)
+        {
+            SkillConfig skillConfig = PlayerManager.Instance.heroController.GetHighestLevelOr1(modelConfig.skillID[i], level.Value, star.Value, true);
+            if (skillConfig.ID > 0)
+            {
+                unLockSkills.Add(skillConfig.ID);
+            }
+        }
     }
 
     protected void SetDataConfig(int modelID,int level, int star)
@@ -130,8 +148,8 @@ public class CombatHeroInfo
         SetDataConfig(modelID, level, star);
         CalFactor();
         CalAttribute();
-        SkillData = new SkillData(this);
-        SkillData.InitSkills();
+        // SkillData = new SkillData(this);
+        // SkillData.InitSkills();
     }
 
     // public void InitMonster(int id,int level)

+ 13 - 12
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroSkillControl.cs

@@ -1,4 +1,5 @@
 using System;
+using System.Collections.Generic;
 using Common.Utility.CombatEvent;
 using Excel2Json;
 using Fort23.UTool;
@@ -36,20 +37,20 @@ namespace GameLogic.Combat.Hero
         public void Init(CombatHeroEntity combatHeroEntity)
         {
             _combatHeroEntity = combatHeroEntity;
-            // int[] skillId = _combatHeroEntity.CurrCombatHeroInfo.skillId;
-            // if (skillId != null)
-            // {
-            //     for (int i = 0; i < skillId.Length; i++)
-            //     {
-            //         SkillConfig skillConfig = ConfigComponent.Instance.Get<SkillConfig>(skillId[i]);
-            //         AddSkill(skillConfig);
-            //     }
-            // }
-
-            foreach (SkillConfig skillConfig in combatHeroEntity.CurrCombatHeroInfo.skillConfigs)
+            List<int> skillId = _combatHeroEntity.CurrCombatHeroInfo.unLockSkills;
+            if (skillId != null)
             {
-                AddSkill(skillConfig);
+                for (int i = 0; i < skillId.Count; i++)
+                {
+                    SkillConfig skillConfig = ConfigComponent.Instance.Get<SkillConfig>(skillId[i]);
+                    AddSkill(skillConfig);
+                }
             }
+
+            // foreach (SkillConfig skillConfig in combatHeroEntity.CurrCombatHeroInfo.skillConfigs)
+            // {
+            //     AddSkill(skillConfig);
+            // }
         }
 
         public void AddSkill(SkillConfig skillConfig)

+ 99 - 0
Assets/Scripts/GameLogic/Hero/HeroController.cs

@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using Common.Utility.CombatEvent;
 using Core.Utility;
+using Excel2Json;
 using Fort23.Core;
 using Fort23.UTool;
 using GameLogic.Bag;
@@ -246,6 +247,104 @@ namespace GameLogic.Hero
         }
         
         
+         /// <summary>
+        /// onlyUnLock=true, 获取已解锁的最高等级的技能
+        /// onlyUnLock=false,获取已解锁的最高等级的技能,若都没有解锁,则获取未解锁的1级技能
+        /// </summary>
+        /// <param name="groupID">技能组</param>
+        /// <param name="level">英雄等级</param>
+        /// <param name="star">英雄星级</param>
+        /// <param name="onlyUnLock">ture=只返回解锁的</param>
+        /// <returns></returns>
+        public SkillConfig GetHighestLevelOr1(int groupID, int level, int star, bool onlyUnLock = false)
+        {
+            SkillConfig skillConfig = new SkillConfig();
+            
+            int lv = 0;
+            for(int i = 0; i <  PlayerManager.Instance.groupSkillDIc[groupID].Count; i++)
+            {
+                SkillConfig config = PlayerManager.Instance.groupSkillDIc[groupID][i];
+
+                if (i == 0 && !onlyUnLock)
+                {
+                    skillConfig = config;
+                }
+                
+                // if (config.isUnLock && config.skillConfig.level > lv)
+                if(IsUnLockSkill(level, star, config.ID) && config.level > lv)
+                {
+                    lv = config.level;
+                    skillConfig = config;
+                }
+            }
+            return skillConfig;
+        }
+        
+        /// <summary>
+        /// 技能是否解锁
+        /// </summary>
+        /// <param name="level">英雄等级</param>
+        /// <param name="star">英雄星级</param>
+        /// <param name="skillID">技能id</param>
+        /// <returns></returns>
+        public bool IsUnLockSkill(int level, int star, int skillID)
+        {
+            bool isUnLock = false;
+            if (skillID == GlobalParam.Normal_Attack_Skill_Group_ID)
+            {
+                isUnLock = true;
+            }
+            else
+            {
+                //整体可能有点绕,后面再看优化不
+                
+                //取技能ID的后两位,后两位是技能解锁表SkillUpConfig的ID, 取这个ID来判断,这个技能是否解锁,以及还差多少差解锁
+                int skillUpID = skillID % 100;
+                SkillUpConfig skillUpConfig = ConfigComponent.Instance.Get<SkillUpConfig>(skillUpID);
+
+                //取个位
+                int gw = skillUpID % 10;
+                
+                int skillUpID1 = -1;
+                //当个位>1时,需要额外判断一下,技能的1级是否已经解锁(可能1级是星级解锁)
+                //避免出现,技能是5星解锁解锁1级,200级解锁2级,但玩家现在4星,201级,就不该解锁2级,因为星级不够
+                if (gw > 1)
+                {
+                    //技能1级的解锁ID,例如: 33 - 3 + 1 = 31, 31就是技能1级的解锁条件id
+                    skillUpID1 = skillUpID - gw + 1;
+                }
+                
+                //等级解锁
+                if (skillUpConfig.upType == 1)
+                {
+                    SkillUpConfig skillUpConfig1 = new SkillUpConfig();
+                    //准备判断,该技能1级时,是否为星级解锁
+                    if (skillUpID1 > 0)
+                    {
+                        skillUpConfig1 = ConfigComponent.Instance.Get<SkillUpConfig>(skillUpID1);
+                    }
+
+                    //如果技能的第一级需要星级解锁,需额外判断一下星级是否达到
+                    bool isStarOk = skillUpConfig1.upType != 2 || star > skillUpConfig1.upValue;
+                    
+
+                    if (level >= skillUpConfig.upValue && isStarOk)
+                    {
+                        isUnLock = true;
+                    }
+                }
+                //星级解锁
+                else if (skillUpConfig.upType == 2)
+                {
+                    if (star >= skillUpConfig.upValue)
+                    {
+                        isUnLock = true;
+                    }
+                }
+            }
+
+            return isUnLock;
+        }
         
     }
 }

+ 1 - 1
Assets/Scripts/GameLogic/Hero/HeroInfo.cs

@@ -6,7 +6,7 @@ namespace GameLogic.Hero
 {
     public class HeroInfo : CombatHeroInfo
     {
-       
+        public SkillData SkillData;
         private string _iconZhiYe;
         
         /// <summary>

+ 14 - 14
Assets/Scripts/GameLogic/Hero/SkillData.cs

@@ -67,9 +67,9 @@ namespace GameLogic.Hero
         
         public void InitSkills()
         {
-            for (int i = 0; i < heroInfo.skillId.Length; i++)
+            for (int i = 0; i < heroInfo.modelConfig.skillID.Length; i++)
             {
-                int skillGroup = heroInfo.skillId[i];
+                int skillGroup = heroInfo.modelConfig.skillID[i];
 
                 foreach (SkillConfig config in PlayerManager.Instance.groupSkillDIc[skillGroup])
                 {
@@ -92,7 +92,7 @@ namespace GameLogic.Hero
                     }
                 }
 
-                UpdateSkill4Combat();
+                // UpdateSkill4Combat();
             }
         }
 
@@ -102,17 +102,17 @@ namespace GameLogic.Hero
         /// </summary>
         public void UpdateSkill4Combat()
         {
-            int idx = 0;
-            heroInfo.skillConfigs = new List<SkillConfig>();
-            foreach (KeyValuePair<int, List<SkillInfo>> keyValuePair in heroInfo.SkillData.mySkillDic)
-            {
-                SkillInfo combatSkill = GetHighestLevelOr1(keyValuePair.Key, true);
-                if (combatSkill != null)
-                {
-                    allSkill4Combat.Add(combatSkill);
-                    heroInfo.skillConfigs.Add(combatSkill.skillConfig);
-                }
-            }
+            // int idx = 0;
+            // heroInfo.skillConfigs = new List<SkillConfig>();
+            // foreach (KeyValuePair<int, List<SkillInfo>> keyValuePair in heroInfo.SkillData.mySkillDic)
+            // {
+            //     SkillInfo combatSkill = GetHighestLevelOr1(keyValuePair.Key, true);
+            //     if (combatSkill != null)
+            //     {
+            //         allSkill4Combat.Add(combatSkill);
+            //         heroInfo.skillConfigs.Add(combatSkill.skillConfig);
+            //     }
+            // }
         }
         
         

+ 54 - 55
Assets/Scripts/GameLogic/Hero/SkillInfo.cs

@@ -21,62 +21,61 @@ namespace GameLogic.Hero
             this._skillData = skillData;
             this.skillConfig = skillConfig;
             heroInfo = skillData.heroInfo;
-
             
-            isUnLock = false;
-            if (skillConfig.ID == GlobalParam.Normal_Attack_Skill_Group_ID)
-            {
-                isUnLock = true;
-            }
-            else
-            {
-                //整体可能有点绕,后面再看优化不
-                
-                //取技能ID的后两位,后两位是技能解锁表SkillUpConfig的ID, 取这个ID来判断,这个技能是否解锁,以及还差多少差解锁
-                int skillUpID = skillConfig.ID % 100;
-                skillUpConfig = ConfigComponent.Instance.Get<SkillUpConfig>(skillUpID);
-
-                //取个位
-                int gw = skillUpID % 10;
-                
-                int skillUpID1 = -1;
-                //当个位>1时,需要额外判断一下,技能的1级是否已经解锁(可能1级是星级解锁),比如 21,31,,41。
-                //避免出现,技能是5星解锁解锁1级,200级解锁2级,但玩家现在4星,201级,就不该解锁2级,因为星级不够
-                if (gw > 1)
-                {
-                    //技能1级的解锁ID,例如: 33 - 3 + 1 = 31, 31就是技能1级的解锁条件id
-                    skillUpID1 = skillUpID - gw + 1;
-                }
-                
-                //等级解锁
-                if (skillUpConfig.upType == 1)
-                {
-                    SkillUpConfig skillUpConfig1 = new SkillUpConfig();
-                    if (skillUpID1 > 0)
-                    {
-                        skillUpConfig1 = ConfigComponent.Instance.Get<SkillUpConfig>(skillUpID1);
-                    }
-
-                    //如果技能的第一级需要星级解锁,需额外判断一下星级是否达到
-                    bool isStarOk = skillUpConfig1.upType != 2 || heroInfo.star.Value > skillUpConfig1.upValue;
-                    
-
-                    if (heroInfo.level.Value >= skillUpConfig.upValue && isStarOk)
-                    {
-                        isUnLock = true;
-                    }
-      
-                }
-                //星级解锁
-                else if (skillUpConfig.upType == 2)
-                {
-                    if (heroInfo.star.Value >= skillUpConfig.upValue)
-                    {
-                        isUnLock = true;
-                    }
-                }
-                
-            }
+            isUnLock = PlayerManager.Instance.heroController.IsUnLockSkill(heroInfo.level.Value, heroInfo.star.Value, skillConfig.ID);
+            
+            // isUnLock = false;
+            // if (skillConfig.ID == GlobalParam.Normal_Attack_Skill_Group_ID)
+            // {
+            //     isUnLock = true;
+            // }
+            // else
+            // {
+            //     //整体可能有点绕,后面再看优化不
+            //     
+            //     //取技能ID的后两位,后两位是技能解锁表SkillUpConfig的ID, 取这个ID来判断,这个技能是否解锁,以及还差多少差解锁
+            //     int skillUpID = skillConfig.ID % 100;
+            //     skillUpConfig = ConfigComponent.Instance.Get<SkillUpConfig>(skillUpID);
+            //
+            //     //取个位
+            //     int gw = skillUpID % 10;
+            //     
+            //     int skillUpID1 = -1;
+            //     //当个位>1时,需要额外判断一下,技能的1级是否已经解锁(可能1级是星级解锁),比如 21,31,,41。
+            //     //避免出现,技能是5星解锁解锁1级,200级解锁2级,但玩家现在4星,201级,就不该解锁2级,因为星级不够
+            //     if (gw > 1)
+            //     {
+            //         //技能1级的解锁ID,例如: 33 - 3 + 1 = 31, 31就是技能1级的解锁条件id
+            //         skillUpID1 = skillUpID - gw + 1;
+            //     }
+            //     
+            //     //等级解锁
+            //     if (skillUpConfig.upType == 1)
+            //     {
+            //         SkillUpConfig skillUpConfig1 = new SkillUpConfig();
+            //         if (skillUpID1 > 0)
+            //         {
+            //             skillUpConfig1 = ConfigComponent.Instance.Get<SkillUpConfig>(skillUpID1);
+            //         }
+            //
+            //         //如果技能的第一级需要星级解锁,需额外判断一下星级是否达到
+            //         bool isStarOk = skillUpConfig1.upType != 2 || heroInfo.star.Value > skillUpConfig1.upValue;
+            //         
+            //
+            //         if (heroInfo.level.Value >= skillUpConfig.upValue && isStarOk)
+            //         {
+            //             isUnLock = true;
+            //         }
+            //     }
+            //     //星级解锁
+            //     else if (skillUpConfig.upType == 2)
+            //     {
+            //         if (heroInfo.star.Value >= skillUpConfig.upValue)
+            //         {
+            //             isUnLock = true;
+            //         }
+            //     }
+            // }
         }
         
         

+ 3 - 2
Assets/Scripts/GameUI/UI/Hero/HeroDetailPanel.cs

@@ -39,10 +39,11 @@ namespace Fort23.Mono
             btnSkill.onClick.AddListener(OnClickSkill);
         }
 
+        public SkillUIComponent skillUIComponent;
         private async void OnClickSkill()
         {
-            SkillUIComponent skillUIComponent = await UIManager.Instance.CreateGComponent<SkillUIComponent>(null, poolName:"SkillUIComponent",
-                root:this.transform);
+            skillUIComponent = await UIManager.Instance.CreateGComponent<SkillUIComponent>(null, poolName:"SkillUIComponent",
+                root:transform);
             skillUIComponent.InitUI(heroInfo);
         }
 

+ 4 - 3
Assets/Scripts/GameUI/UI/Hero/SkillUIComponent.cs

@@ -154,9 +154,10 @@ namespace Fort23.Mono
             {
                 txtTips.text = "技能已达最高等级";
             }
-            
-            
-            layoutGroup.SetLayoutVertical();
+
+
+            layoutGroup.enabled = true;
+            // layoutGroup.enabled = false;
         }
 
     }

+ 6 - 3
Assets/Scripts/GameUI/UI/Hero/WidgetIconSkill.cs

@@ -24,10 +24,13 @@ namespace Fort23.Mono
         private int groupID;
         private async void OnClickSkillBtn()
         {
-            SkillUIComponent skillUIComponent = await UIManager.Instance.CreateGComponent<SkillUIComponent>(Callback);
-            skillUIComponent.SetOtherBorder(this);
+            
+            HeroDetailPanel heroDetailPanel = await UIManager.Instance.LoadAndOpenPanel<HeroDetailPanel>(null);
+            
+            // SkillUIComponent skillUIComponent = await UIManager.Instance.CreateGComponent<SkillUIComponent>(Callback);
+            heroDetailPanel.skillUIComponent.SetOtherBorder(this);
             imgBorder.color = new Color(0, 1, 0.65f);
-            skillUIComponent.ShowSkillDetail(skillInfo.skillConfig.IDGroup);
+            heroDetailPanel.skillUIComponent.ShowSkillDetail(skillInfo.skillConfig.IDGroup);
         }
         
         private void Callback(SkillUIComponent obj)

+ 5 - 5
美术/工具/imgui.ini

@@ -10,27 +10,27 @@ Collapsed=0
 
 [Window][Tool]
 Pos=400,0
-Size=709,100
+Size=715,100
 Collapsed=0
 
 [Window][unity_art]
-Pos=1109,0
+Pos=1115,0
 Size=400,720
 Collapsed=0
 
 [Window][console]
 Pos=400,520
-Size=709,70
+Size=715,70
 Collapsed=0
 
 [Window][控制台]
 Pos=400,590
-Size=709,130
+Size=715,130
 Collapsed=0
 
 [Window][scence]
 Pos=400,100
-Size=709,420
+Size=715,420
 Collapsed=0
 
 [Docking][Data]