Procházet zdrojové kódy

修复死循环的问题

WGL před 1 měsícem
rodič
revize
5bce2398db
1 změnil soubory, kde provedl 17 přidání a 10 odebrání
  1. 17 10
      ActionTowerDefense/Assets/Scripts/UI/ShopUI.cs

+ 17 - 10
ActionTowerDefense/Assets/Scripts/UI/ShopUI.cs

@@ -35,7 +35,8 @@ public class ShopUI : MonoBehaviour
         moneyText.text = $"{gameManager.money}";
         refreshPriceText.text = $"-{refreshPrice}";
         List<int> randomTreasure = new List<int>();
-        for(int i = 0; i < 5; i++)
+        List<List<List<SingleTreasureConfig>>> treasureLists = new List<List<List<SingleTreasureConfig>>>(gameManager.treasuresList);
+        for (int i = 0; i < 5; i++)
         {
             if (treasuresSaleUI[i].islock)
             {
@@ -48,7 +49,7 @@ public class ShopUI : MonoBehaviour
             {
                 continue;
             }
-            int targetQualityID = -1;
+            int targetQualityID = 0;
             float randomQuality = Random.Range(0f, 100f);
             float refreshChance = 0;
             for(int j = 0; j < 4; j++)
@@ -68,7 +69,7 @@ public class ShopUI : MonoBehaviour
                 refreshChance = 0;
                 for (int j = 0; j < 3; j++)
                 {
-                    refreshChance += gameManager.trueRefreshChance[j];
+                    refreshChance += gameManager.tagWeight[j];
                     if (randomTagWeight <= refreshChance)
                     {
                         targetTagWeight = j;
@@ -78,7 +79,7 @@ public class ShopUI : MonoBehaviour
                 switch (targetTagWeight)
                 {
                     case 0:
-                        targetTag = gameManager.maxTreasuresTag;
+                        targetTag = gameManager.maxTreasuresTag + 1;
                         break;
                     case 1:
                         List<int> targetTags = new List<int>();
@@ -93,14 +94,20 @@ public class ShopUI : MonoBehaviour
                         break;
                 }
             }
-            
             int randId = Random.Range(0, gameManager.treasuresList[targetQualityID][targetTag].Count);
             SingleTreasureConfig singleTreasureConfig = gameManager.treasuresList[targetQualityID][targetTag][randId];
-            while (randomTreasure.Exists(x => x == gameManager.treasuresList[targetQualityID][targetTag][randId].ID))
-            {
-                randId = Random.Range(0, gameManager.treasuresList[targetQualityID][targetTag].Count);
-                singleTreasureConfig = gameManager.treasuresList[targetQualityID][targetTag][randId];
-            }
+            //while (randomTreasure.Exists(x => x == singleTreasureConfig.ID))
+            //{
+            //    randId = Random.Range(0, gameManager.treasuresList[targetQualityID][targetTag].Count);
+            //    singleTreasureConfig = gameManager.treasuresList[targetQualityID][targetTag][randId];
+            //    string aa = "";
+            //    for (int a = 0; a < randomTreasure.Count; a++)
+            //    {
+            //        aa += $"{randomTreasure[a]}";
+            //    }
+            //    Debug.Log(aa);
+            //    Debug.Log($"{singleTreasureConfig.ID}");
+            //}
             Sprite sprite = Resources.Load<Sprite>($"Textures/UI/Treasure/{singleTreasureConfig.SpriteName}");
             List<Sprite> tags = new List<Sprite>();
             for (int j = 0; j < singleTreasureConfig.Tag.Count; j++)