Procházet zdrojové kódy

暴力修复首次生成敌人造成卡顿的问题

wulifu před 10 měsíci
rodič
revize
b8579f5264

+ 2 - 2
ActionTowerDefense/Assets/Scripts/Enemy.cs

@@ -1020,11 +1020,11 @@ public class Enemy : MoveCharacter
             case SearchState.NoTarget:
                 Character character0 = PlayersInput.instance[0];
                 Character character1 = PlayersInput.instance[1];
-                if (character0.beTargetCharacter.Exists(t => t == this))
+                if (character0 && character0.beTargetCharacter.Exists(t => t == this))
                 {
                     character0.beTargetCharacter.Remove(this);
                 }
-                if (character1.beTargetCharacter.Exists(t => t == this))
+                if (character1 && character1.beTargetCharacter.Exists(t => t == this))
                 {
                     character1.beTargetCharacter.Remove(this);
                 }

+ 10 - 1
ActionTowerDefense/Assets/Scripts/EnemyCreater.cs

@@ -55,6 +55,14 @@ public class EnemyCreater : MonoBehaviour
             createdBuilding.Add(false);
             createBuildingTime.Add(cfgCreateBuilding[i].Time);
         }
+
+        //把所有怪物prefab生成一遍防止后面初次生成卡顿
+        foreach (var item in GameManager.instance.allCfgData.CfgEnemy.DataMap)
+        {
+            SingleEnemyConfig cfgEnemy = item.Value;
+            GameObject enemyObj = CreateEnemy(cfgEnemy.ID, Vector3.zero, 1, 1);
+            enemyObj.SetActive(false);
+        }
     }
 
     public void OnGameTimeChange(float gameTime)
@@ -276,7 +284,7 @@ public class EnemyCreater : MonoBehaviour
         }
     }
 
-    public void CreateEnemy(int enemyId, Vector3 pos, float hpRatio, float attackRatio)
+    public GameObject CreateEnemy(int enemyId, Vector3 pos, float hpRatio, float attackRatio)
     {
         SingleEnemyConfig cfgEnemy = GameManager.instance.allCfgData.CfgEnemy.Get(enemyId);
         GameObject enemyObj = Util.Instantiate(cfgEnemy.EnemyPrefab, pos);
@@ -315,6 +323,7 @@ public class EnemyCreater : MonoBehaviour
             enemy.Init();
             enemy.SetSortingOrder(enemy.baseSortingOrder + enemyDic[enemyId].Count);
         }
+        return enemyObj;
     }
 
     public void OnEnemyRecycle(Enemy enemy)