Ver código fonte

动态表最大值计算错误

wgl 5 meses atrás
pai
commit
1db85a057d
1 arquivos alterados com 17 adições e 47 exclusões
  1. 17 47
      ActionTowerDefense/Assets/Scripts/EnemyCreater.cs

+ 17 - 47
ActionTowerDefense/Assets/Scripts/EnemyCreater.cs

@@ -292,53 +292,23 @@ public class EnemyCreater : MonoBehaviour
     public int MaxSoldierLevel()
     {
         SoldierEXP.SingleSoldierEXP[] singleSoldierEXP = soldierEXP.ssexp;
-        if (singleSoldierEXP[0].level == singleSoldierEXP[1].level)
-        {
-            if (singleSoldierEXP[1].level == singleSoldierEXP[2].level)
-            {
-                return Random.Range(0, 3);
-            }
-            else
-            {
-                return Random.Range(0, 2);
-            }
-        }
-        else
-        {
-            if (singleSoldierEXP[1].level == singleSoldierEXP[2].level)
-            {
-                return Random.Range(1, 3);
-            }
-            else if (singleSoldierEXP[0].level == singleSoldierEXP[2].level)
-            {
-                return Random.Range(0, 2) == 0 ? 0 : 2;
-            }
-            else
-            {
-                if (singleSoldierEXP[1].level > singleSoldierEXP[0].level)
-                {
-                    if (singleSoldierEXP[2].level > singleSoldierEXP[1].level)
-                    {
-                        return 2;
-                    }
-                    else
-                    {
-                        return 1;
-                    }
-                }
-                else
-                {
-                    if (singleSoldierEXP[2].level > singleSoldierEXP[0].level)
-                    {
-                        return 2;
-                    }
-                    else
-                    {
-                        return 0;
-                    }
-                }
-            }
-        }
+        int a = singleSoldierEXP[0].level;
+        int b = singleSoldierEXP[1].level;
+        int c = singleSoldierEXP[2].level;
+        int max = Mathf.Max(a, Mathf.Max(b, c)); // 先找到最大值
+
+        // 收集所有等于最大值的变量名(可能有多个)
+        List<int> maxVariables = new List<int>();
+
+        if (a == max) maxVariables.Add(0);
+        if (b == max) maxVariables.Add(1);
+        if (c == max) maxVariables.Add(2);
+
+        // 随机选择一个(如果有多个最大值)
+        
+        int maxID = maxVariables[Random.Range(0, maxVariables.Count)];
+        Debug.Log($"等级:{a};{b};{c},取{maxID}");
+        return maxID;
     }
 
     public GameObject CreateEnemy(SingleCreateEnemyConfig cfgCreateEnemy, Vector3 pos, bool active = false)