瀏覽代碼

增加了几种索敌方式,通过调整AttackMeth中的searchMode实现(默认还是最近距离)

Callum 3 月之前
父節點
當前提交
a2f5eb2eed

文件差異過大導致無法顯示
+ 3 - 3
ActionTowerDefense/Assets/GameLevelEditor/maps.asset


+ 9 - 7
ActionTowerDefense/Assets/Resources/Prefab/Enemy/Enemy_1013.prefab

@@ -314,8 +314,8 @@ BoxCollider:
   m_IsTrigger: 1
   m_Enabled: 1
   serializedVersion: 2
-  m_Size: {x: 49.916733, y: 7.416742, z: 20}
-  m_Center: {x: 14.958351, y: 3.708371, z: 0}
+  m_Size: {x: 25, y: 15, z: 20}
+  m_Center: {x: 3.0919836, y: 6.5067897, z: 0}
 --- !u!114 &3901303690735582333
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -613,7 +613,7 @@ MonoBehaviour:
       force: 0
       time: 0
       haveLandingDamage: 0
-      landingDamage: 0
+      landingDamageRate: 0
       ControlOrder: 0
     shotDown:
       directionType: 0
@@ -985,7 +985,7 @@ MonoBehaviour:
       force: 0
       time: 0
       haveLandingDamage: 0
-      landingDamage: 0
+      landingDamageRate: 0
       ControlOrder: 0
     shotDown:
       directionType: 0
@@ -1044,7 +1044,7 @@ MonoBehaviour:
         force: 0
         time: 0
         haveLandingDamage: 0
-        landingDamage: 0
+        landingDamageRate: 0
         ControlOrder: 0
       shotDown:
         directionType: 0
@@ -1072,6 +1072,7 @@ MonoBehaviour:
     maxAttackDis: 15
     minAttackDis: 9
     needToChange: 1
+    searchMode: 1
     targetTypes: 010000000200000003000000
     canHitFly: 1
     armorPiercing: 0
@@ -1107,7 +1108,7 @@ MonoBehaviour:
         force: 0
         time: 0
         haveLandingDamage: 0
-        landingDamage: 0
+        landingDamageRate: 0
         ControlOrder: 0
       shotDown:
         directionType: 0
@@ -1135,6 +1136,7 @@ MonoBehaviour:
     maxAttackDis: 0
     minAttackDis: 0
     needToChange: 0
+    searchMode: 0
     targetTypes: 
     canHitFly: 0
     armorPiercing: 0
@@ -1481,7 +1483,7 @@ MonoBehaviour:
       force: 0
       time: 0
       haveLandingDamage: 0
-      landingDamage: 0
+      landingDamageRate: 0
       ControlOrder: 0
     shotDown:
       directionType: 0

+ 2 - 2
ActionTowerDefense/Assets/Scripts/Boss/YuMenGuan/YuMenGuan.cs

@@ -183,7 +183,7 @@ public class YuMenGuan : Boss
         }
         else
         {
-            otherTarget = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.canHitFly);
+            otherTarget = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.canHitFly, attackController.curAttackMethod.searchMode);
             if (otherTarget != null)
             {
                 EndCurAttackState(false);
@@ -448,7 +448,7 @@ public class YuMenGuan : Boss
             case AttackCategories.A:
                 searchTrigger.enabled = true;
                 otherTarget = null;
-                otherTarget = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.canHitFly);
+                otherTarget = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.canHitFly, attackController.curAttackMethod.searchMode);
                 if (otherTarget == null)
                 {
                     isAttackWalk = false;

+ 1 - 0
ActionTowerDefense/Assets/Scripts/Characters/AttackController.cs

@@ -213,6 +213,7 @@ public class AttackController : MonoBehaviour
         public bool needToChange;
 
         [Header("Ä¿±ê")]
+        public SearchMode searchMode;
         public List<TargetType> targetTypes;
         public bool canHitFly;
         public int armorPiercing;               //´©¼×ÂÊ

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Characters/Demonic.cs

@@ -65,7 +65,7 @@ public class Demonic : MoveCharacter
 
     public bool SearchTarget()
     {
-        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.canHitFly);
+        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.canHitFly,attackController.curAttackMethod.searchMode);
         if (targetCharacter != null)
         {
             return true;

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Characters/Enemy.cs

@@ -800,7 +800,7 @@ public class Enemy : MoveCharacter
 
     public bool SearchTarget()
     {
-        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.canHitFly);
+        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.canHitFly, attackController.curAttackMethod.searchMode);
 
         if (targetCharacter != null)
         {

+ 143 - 25
ActionTowerDefense/Assets/Scripts/Characters/SearchTrigger.cs

@@ -190,41 +190,150 @@ public class SearchTrigger : MonoBehaviour
         return list;
     }
 
-    public Character GetMinDisTarget(List<TargetType> targetTypes, bool canHitFly)
+    public Character GetMinDisTarget(List<TargetType> targetTypes, bool canHitFly,SearchMode searchMode)
     {
         if (!enabled || !gameObject.activeInHierarchy)
         {
             return null;
         }
         List<Character> list = GetAllTargets(targetTypes, canHitFly);
-
-        Character minDisChar = null;
-        float minDistance = -1;
-        for (int i = 0; i < list.Count; i++)
+        switch (searchMode)
         {
-            Character character = list[i];
-            //判断对象是否在远程单位的射击夹角范围内
-            AttackController.AttackMethod am = owner.attackController.curAttackMethod;
-            if (am.attackType == AttackController.AttackType.Shoot)
-            {
-                float up = am.maxUpAngle;
-                float down = am.maxDownAngle;
-                Vector3 dir = character.beSearchTrigger.transform.position - transform.position;
-                float angle = Vector3.Angle(dir, Vector3.left * owner.bodyTrans.localScale.x);
-                if ((dir.y > 0 && angle > up) || (dir.y < 0 && angle > down))
+            case SearchMode.MinDistance:
+                Character minDisChar = null;
+                float minDistance = -1;
+                for (int i = 0; i < list.Count; i++)
                 {
-                    continue;
+                    Character character = list[i];
+                    //判断对象是否在远程单位的射击夹角范围内
+                    AttackController.AttackMethod am = owner.attackController.curAttackMethod;
+                    if (am.attackType == AttackController.AttackType.Shoot)
+                    {
+                        float up = am.maxUpAngle;
+                        float down = am.maxDownAngle;
+                        Vector3 dir = character.beSearchTrigger.transform.position - transform.position;
+                        float angle = Vector3.Angle(dir, Vector3.left * owner.bodyTrans.localScale.x);
+                        if ((dir.y > 0 && angle > up) || (dir.y < 0 && angle > down))
+                        {
+                            continue;
+                        }
+                    }
+                    //判断是否在攻击范围内
+                    float distance = Mathf.Abs(character.transform.position.x - owner.transform.position.x);
+                    if (minDisChar == null || minDistance == -1 || minDistance > distance)
+                    {
+                        minDisChar = character;
+                        minDistance = distance;
+                    }
                 }
-            }
-            //判断是否在攻击范围内
-            float distance = Mathf.Abs(character.transform.position.x - owner.transform.position.x);
-            if (minDisChar == null || minDistance == -1 || minDistance > distance)
-            {
-                minDisChar = character;
-                minDistance = distance;
-            }
+                return minDisChar;
+            case SearchMode.MaxDistance:
+                Character maxDisChar = null;
+                float maxDistance = -1;
+                for (int i = 0; i < list.Count; i++)
+                {
+                    Character character = list[i];
+                    //判断对象是否在远程单位的射击夹角范围内
+                    AttackController.AttackMethod am = owner.attackController.curAttackMethod;
+                    if (am.attackType == AttackController.AttackType.Shoot)
+                    {
+                        float up = am.maxUpAngle;
+                        float down = am.maxDownAngle;
+                        Vector3 dir = character.beSearchTrigger.transform.position - transform.position;
+                        float angle = Vector3.Angle(dir, Vector3.left * owner.bodyTrans.localScale.x);
+                        if ((dir.y > 0 && angle > up) || (dir.y < 0 && angle > down))
+                        {
+                            continue;
+                        }
+                    }
+                    //判断是否在攻击范围内
+                    float distance = Mathf.Abs(character.transform.position.x - owner.transform.position.x);
+                    if (maxDisChar == null || maxDistance == -1 || maxDistance < distance)
+                    {
+                        maxDisChar = character;
+                        maxDistance = distance;
+                    }
+                }
+                Debug.Log(maxDisChar);
+                return maxDisChar;
+            case SearchMode.MinHp:
+                Character minHPChar = null;
+                for (int i = 0; i < list.Count; i++)
+                {
+                    Character character = list[i];
+                    //判断对象是否在远程单位的射击夹角范围内
+                    AttackController.AttackMethod am = owner.attackController.curAttackMethod;
+                    if (am.attackType == AttackController.AttackType.Shoot)
+                    {
+                        float up = am.maxUpAngle;
+                        float down = am.maxDownAngle;
+                        Vector3 dir = character.beSearchTrigger.transform.position - transform.position;
+                        float angle = Vector3.Angle(dir, Vector3.left * owner.bodyTrans.localScale.x);
+                        if ((dir.y > 0 && angle > up) || (dir.y < 0 && angle > down))
+                        {
+                            continue;
+                        }
+                    }
+                    if (minHPChar == null || minHPChar.hp < character.hp)
+                    {
+                        minHPChar = character;
+                    }
+                }
+                return minHPChar;
+            case SearchMode.MaxHp:
+                Character maxHPChar = null;
+                for (int i = 0; i < list.Count; i++)
+                {
+                    Character character = list[i];
+                    //判断对象是否在远程单位的射击夹角范围内
+                    AttackController.AttackMethod am = owner.attackController.curAttackMethod;
+                    if (am.attackType == AttackController.AttackType.Shoot)
+                    {
+                        float up = am.maxUpAngle;
+                        float down = am.maxDownAngle;
+                        Vector3 dir = character.beSearchTrigger.transform.position - transform.position;
+                        float angle = Vector3.Angle(dir, Vector3.left * owner.bodyTrans.localScale.x);
+                        if ((dir.y > 0 && angle > up) || (dir.y < 0 && angle > down))
+                        {
+                            continue;
+                        }
+                    }
+                    if (maxHPChar == null || maxHPChar.hp > character.hp)
+                    {
+                        maxHPChar = character;
+                    }
+                }
+                return maxHPChar;
+            case SearchMode.ByType:
+                break;
         }
-        return minDisChar;
+        //Character minDisChar = null;
+        //float minDistance = -1;
+        //for (int i = 0; i < list.Count; i++)
+        //{
+        //    Character character = list[i];
+        //    //判断对象是否在远程单位的射击夹角范围内
+        //    AttackController.AttackMethod am = owner.attackController.curAttackMethod;
+        //    if (am.attackType == AttackController.AttackType.Shoot)
+        //    {
+        //        float up = am.maxUpAngle;
+        //        float down = am.maxDownAngle;
+        //        Vector3 dir = character.beSearchTrigger.transform.position - transform.position;
+        //        float angle = Vector3.Angle(dir, Vector3.left * owner.bodyTrans.localScale.x);
+        //        if ((dir.y > 0 && angle > up) || (dir.y < 0 && angle > down))
+        //        {
+        //            continue;
+        //        }
+        //    }
+        //    //判断是否在攻击范围内
+        //    float distance = Mathf.Abs(character.transform.position.x - owner.transform.position.x);
+        //    if (minDisChar == null || minDistance == -1 || minDistance > distance)
+        //    {
+        //        minDisChar = character;
+        //        minDistance = distance;
+        //    }
+        //}
+        return null;
     }
 
     public Character GetMinHPCharacter(List<TargetType> targetTypes, bool canHitFly)
@@ -243,3 +352,12 @@ public class SearchTrigger : MonoBehaviour
         return minHPChar;
     }
 }
+
+public enum SearchMode
+{
+    MinDistance,
+    MaxDistance,
+    MinHp,
+    MaxHp,
+    ByType
+}

+ 5 - 5
ActionTowerDefense/Assets/Scripts/Skills/FireBallController.cs

@@ -35,6 +35,7 @@ public class FireBallController : MonoBehaviour
     {
         isFlying = false;
         fx.SetActive(true);
+        rb.useGravity = false   ;
     }
 
     // 初始化发射
@@ -134,21 +135,20 @@ public class FireBallController : MonoBehaviour
         if (rb != null)
         {
             rb.AddForce(Vector3.down * gravity, ForceMode.Acceleration);
-
-            // 可选:通过插值确保轨迹更贴近贝塞尔曲线(处理物理误差)
             if (t < 1f)
             {
                 Vector3 desiredVelocity = (targetPosition - transform.position) / Time.deltaTime;
                 rb.velocity = Vector3.Lerp(rb.velocity, desiredVelocity, 0.1f);
             }
         }
-
-        // 到达终点时处理
         if (t >= 1f && isFlying)
         {
             isFlying = false;
             if (rb != null)
-                rb.velocity = Vector3.zero;
+            {
+                isFlying = false ;
+                rb.useGravity = true;
+            }
         }
     }
 

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Tower/EnemyTower.cs

@@ -41,7 +41,7 @@ public class EnemyTower : Character
 
     public void SearchTarget()
     {
-        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, true);
+        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, true, attackController.curAttackMethod.searchMode);
     }
 
     public override void OnState()

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Tower/Tower.cs

@@ -29,7 +29,7 @@ public class Tower : Character
 
     public void SearchTarget()
     {
-        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, true);
+        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, true, attackController.curAttackMethod.searchMode);
     }
 
     public void Attack_March()

+ 6 - 4
ActionTowerDefense/GenerateDatas/json/cfgcreateenemy.json

@@ -98,7 +98,7 @@
     ],
     "StartTime": 5,
     "EndTime": 60,
-    "Count": 20,
+    "Count": 30,
     "AttackRatio": 1,
     "SpeedRatio": 1,
     "HPRatio": 1,
@@ -114,12 +114,14 @@
     "BuildingHP": 0,
     "EnemyName": "白鹭",
     "Position": [
-      58,
-      7
+      59,
+      12,
+      63,
+      12
     ],
     "StartTime": 40,
     "EndTime": 45,
-    "Count": 20,
+    "Count": 10,
     "AttackRatio": 1,
     "SpeedRatio": 1,
     "HPRatio": 1,

+ 15 - 15
ActionTowerDefense/GenerateDatas/json/cfgenemy.json

@@ -11,7 +11,7 @@
     ],
     "HP": 5000,
     "AttackSummon": 200,
-    "AttackMarch": 1000,
+    "AttackMarch": 200,
     "MinMoveSpeed": 0,
     "MaxMoveSpeed": 0
   },
@@ -25,9 +25,9 @@
       0,
       0
     ],
-    "HP": 5000,
-    "AttackSummon": 200,
-    "AttackMarch": 1000,
+    "HP": 3000,
+    "AttackSummon": 500,
+    "AttackMarch": 500,
     "MinMoveSpeed": 0,
     "MaxMoveSpeed": 0
   },
@@ -75,7 +75,7 @@
     ],
     "HP": 1000,
     "AttackSummon": 0,
-    "AttackMarch": 20,
+    "AttackMarch": 5,
     "MinMoveSpeed": 1,
     "MaxMoveSpeed": 3
   },
@@ -91,7 +91,7 @@
     ],
     "HP": 80,
     "AttackSummon": 0,
-    "AttackMarch": 60,
+    "AttackMarch": 8,
     "MinMoveSpeed": 6,
     "MaxMoveSpeed": 9
   },
@@ -123,7 +123,7 @@
     ],
     "HP": 100,
     "AttackSummon": 0,
-    "AttackMarch": 100,
+    "AttackMarch": 8,
     "MinMoveSpeed": 5,
     "MaxMoveSpeed": 8
   },
@@ -134,8 +134,8 @@
     "Type": "Enemy",
     "EnemyPrefab": "Enemy_1007",
     "Radius": [
-      1,
-      1
+      2,
+      2
     ],
     "HP": 1000,
     "AttackSummon": 0,
@@ -144,7 +144,7 @@
     "MaxMoveSpeed": 5
   },
   {
-    "Name": "投掷",
+    "Name": "1013",
     "SpriteName": "rayGhostTest_icon",
     "Color": "#FFFFFF",
     "Type": "Enemy",
@@ -155,21 +155,21 @@
     ],
     "HP": 160,
     "AttackSummon": 0,
-    "AttackMarch": 60,
+    "AttackMarch": 12,
     "MinMoveSpeed": 3,
     "MaxMoveSpeed": 6
   },
   {
     "Name": "白鹭",
-    "SpriteName": "Egret",
+    "SpriteName": "Enemy_Flyzombie",
     "Color": "#FFFFFF",
     "Type": "Enemy",
     "EnemyPrefab": "Enemy_1014",
     "Radius": [
-      1,
-      1
+      7,
+      5
     ],
-    "HP": 300,
+    "HP": 200,
     "AttackSummon": 0,
     "AttackMarch": 500,
     "MinMoveSpeed": 1,

+ 20 - 20
ActionTowerDefense/Luban/.cache.meta

@@ -1,20 +1,20 @@
-C:/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgCreateEnemy.cs,3A9B470F9A1FA351330EA275C82C399,1404,1711769724306
-C:/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgDynamicEnemy.cs,958E9A723CBC3E549EA8B4F9C93AF82,1411,1751868975125
-C:/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgEnemy.cs,AA55E3EA298642B35239B74ED55BFBB,1840,1751868975123
-C:/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgSoldierLevel.cs,A08CC235369146A3251A76BCCA2B9E,1381,1751868975122
-C:/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleCreateEnemyConfig.cs,21FE43B1C3E3CFE1BE2A25FE59E9CBDF,6029,1751868975119
-C:/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleDynamicEnemyConfig.cs,A81776F38E1090D076451986C1A62532,4895,1751868975119
-C:/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleEnemyConfig.cs,B959AABD6E72533BB8F544E6A69E145,4518,1751868975119
-C:/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleSoldierLevel.cs,9476FF24D4306250E2B5EDA835CCCAF,3677,1752572617033
-C:/ActionTowerDefense/ActionTowerDefense/Assets/Gen/Tables.cs,2FED4377FA3B67E342DDC2243B6CC19,1848,1751868975121
-C:/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgcreateenemy.json,17D3A0609A629F3D37E9C55B4C1753E,60945,1752588358574
-C:/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgdynamicenemy.json,CFA6D84E38AB5ED69DD4E601D6526A9,4775,1751531958413
-C:/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgenemy.json,102134CF055938DC5CCE3B1FBC9AF6,3376,1752588248875
-C:/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgsoldierlevel.json,F638D4F050D5607AA39F2D8CFF50612,12176,1751969545426
-C:/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/__beans__.xlsx,98987DA7288FEE34BCD08EA883D425E,9603,1711190247467
-C:/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/__enums__.xlsx,D95915E233EB1E4EB87BE0557A2BFDD,9879,1733113315247
-C:/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/__tables__.xlsx,B1D88AC7368453452592134FD3BA0D2,10222,1748399757941
-C:/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/出怪表.xlsx,19DEDD515DE5E8C31522ADC358FE51,33834,1752588357480
-C:/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/动态出怪表.xlsx,AAB14557FF9426245FE76176E9479D,14212,1752588151740
-C:/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/怪物表.xlsx,4AED45E8DF102432299DA671E2C70D2,10352,1752588151982
-C:/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/士兵等级属性表.xlsx,E215DCBEEFC49F7062C1142A632FACA5,14822,1751969545427
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Assets/Gen/CfgCreateEnemy.cs,3A9B470F9A1FA351330EA275C82C399,1404,1751443568368
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Assets/Gen/CfgDynamicEnemy.cs,958E9A723CBC3E549EA8B4F9C93AF82,1411,1751443568372
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Assets/Gen/CfgEnemy.cs,AA55E3EA298642B35239B74ED55BFBB,1840,1751443568371
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Assets/Gen/CfgSoldierLevel.cs,A08CC235369146A3251A76BCCA2B9E,1381,1751443568368
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Assets/Gen/SingleCreateEnemyConfig.cs,21FE43B1C3E3CFE1BE2A25FE59E9CBDF,6029,1751443568364
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Assets/Gen/SingleDynamicEnemyConfig.cs,A81776F38E1090D076451986C1A62532,4895,1751443568364
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Assets/Gen/SingleEnemyConfig.cs,B959AABD6E72533BB8F544E6A69E145,4518,1751443568363
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Assets/Gen/SingleSoldierLevel.cs,9476FF24D4306250E2B5EDA835CCCAF,3677,1752025469746
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Assets/Gen/Tables.cs,2FED4377FA3B67E342DDC2243B6CC19,1848,1751443568372
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/GenerateDatas/json/cfgcreateenemy.json,CDC7F24BAC517B494594615C646DEBD,60968,1752829573643
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/GenerateDatas/json/cfgdynamicenemy.json,CFA6D84E38AB5ED69DD4E601D6526A9,4775,1751443568364
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/GenerateDatas/json/cfgenemy.json,7F4BA3879161CFDB69F62F34FFC5F858,3370,1753149670782
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/GenerateDatas/json/cfgsoldierlevel.json,27A0B79C8D2E7E7710CF5FC504BD7,18671,1752829573643
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Luban/Config/Datas/__beans__.xlsx,98987DA7288FEE34BCD08EA883D425E,9603,1751380895220
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Luban/Config/Datas/__enums__.xlsx,D95915E233EB1E4EB87BE0557A2BFDD,9879,1751380895221
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Luban/Config/Datas/__tables__.xlsx,B1D88AC7368453452592134FD3BA0D2,10222,1751380895221
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Luban/Config/Datas/出怪表.xlsx,68D0DD2BD1B2D898E4F524088BBD68A,33904,1753149693226
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Luban/Config/Datas/动态出怪表.xlsx,53BBAD66381B268C05EEA4DE9786B,14212,1752716201779
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Luban/Config/Datas/怪物表.xlsx,4D62D784DE732647E64AE9E2A453C541,12961,1753149663999
+D:/桌面/工程文件/Unity/WORK/ActionTowerDefense/Luban/Config/Datas/士兵等级属性表.xlsx,C2D6AA10A0D372D697A1BDD476FA69C,16153,1752716201780

二進制
ActionTowerDefense/Luban/Config/Datas/出怪表.xlsx


二進制
ActionTowerDefense/Luban/Config/Datas/怪物表.xlsx


部分文件因文件數量過多而無法顯示