瀏覽代碼

肉鸽经验升级系统

SZAND\msx_2 5 月之前
父節點
當前提交
24913ee0ed

+ 5 - 1
ActionTowerDefense/Assets/Gen/SingleSoldierLevel.cs

@@ -19,6 +19,7 @@ public sealed partial class SingleSoldierLevel :  Bright.Config.BeanBase
     public SingleSoldierLevel(JSONNode _json) 
     {
         { if(!_json["Level"].IsNumber) { throw new SerializationException(); }  Level = _json["Level"]; }
+        { if(!_json["Soldier"].IsString) { throw new SerializationException(); }  Soldier = _json["Soldier"]; }
         { if(!_json["EXP"].IsNumber) { throw new SerializationException(); }  EXP = _json["EXP"]; }
         { if(!_json["SummonAttack"].IsNumber) { throw new SerializationException(); }  SummonAttack = _json["SummonAttack"]; }
         { if(!_json["MarchAttack"].IsNumber) { throw new SerializationException(); }  MarchAttack = _json["MarchAttack"]; }
@@ -27,9 +28,10 @@ public sealed partial class SingleSoldierLevel :  Bright.Config.BeanBase
         PostInit();
     }
 
-    public SingleSoldierLevel(int Level, int EXP, int SummonAttack, int MarchAttack, int HP, int armor ) 
+    public SingleSoldierLevel(int Level, string Soldier, int EXP, int SummonAttack, int MarchAttack, int HP, int armor ) 
     {
         this.Level = Level;
+        this.Soldier = Soldier;
         this.EXP = EXP;
         this.SummonAttack = SummonAttack;
         this.MarchAttack = MarchAttack;
@@ -44,6 +46,7 @@ public sealed partial class SingleSoldierLevel :  Bright.Config.BeanBase
     }
 
     public int Level { get; private set; }
+    public string Soldier { get; private set; }
     public int EXP { get; private set; }
     public int SummonAttack { get; private set; }
     public int MarchAttack { get; private set; }
@@ -66,6 +69,7 @@ public sealed partial class SingleSoldierLevel :  Bright.Config.BeanBase
     {
         return "{ "
         + "Level:" + Level + ","
+        + "Soldier:" + Soldier + ","
         + "EXP:" + EXP + ","
         + "SummonAttack:" + SummonAttack + ","
         + "MarchAttack:" + MarchAttack + ","

+ 34 - 32
ActionTowerDefense/Assets/Resources/Prefab/Enemy/Enemy_1001.prefab

@@ -334,6 +334,8 @@ MonoBehaviour:
   sustainedInjury_IntervalTime: 0
   sustainedInjury_damage: 0
   heavyDamage: 0
+  killer: {fileID: 0}
+  exp: 5
   id: 0
   baseSortingOrder: 3000
   isBack: 0
@@ -860,42 +862,11 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 1d04dd6e35d71724689001e450625c39, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  haveNewSpecialStates: 0
-  attackInfo:
-    attackValue: 0
-    damage: 0
-    attackDir: {x: 0, y: 0, z: 0}
-    attackEffect: 
-    floatState:
-      time: 0
-      upTime: {x: 0, y: 0}
-      backSpeed: {x: 0, y: 0}
-      rotateSpeed: {x: 0, y: 0}
-      height: {x: 0, y: 0}
-    blowUp:
-      dir: {x: 0, y: 0, z: 0}
-      force: 0
-      time: 0
-    shotDown:
-      dir: {x: 0, y: 0, z: 0}
-      force: 0
-      time: 0
-    weak:
-      time: 0
-    armor:
-      rate: 0
-    vulnerable:
-      rate: 0
-      time: 0
-    changeDamage:
-      rate: 0
-    sustainedInjury:
-      damage: 0
-  attackFrom: {fileID: 0}
   curSpecialStates: -1
   attributeTime: 0
   floatingState: 0
   hitState: 0
+  isFly: 0
   decelerationRatioX: 2
   decelerationRatioY: 15
   haveVulnerable: 0
@@ -922,6 +893,37 @@ MonoBehaviour:
   isFreeze: 0
   canFreeze: 0
   curCharacterState: 0
+  attackInfoData:
+    attackValue: 0
+    damage: 0
+    attackDir: {x: 0, y: 0, z: 0}
+    attackEffect: 
+    floatState:
+      time: 0
+      upTime: {x: 0, y: 0}
+      backSpeed: {x: 0, y: 0}
+      rotateSpeed: {x: 0, y: 0}
+      height: {x: 0, y: 0}
+    blowUp:
+      dir: {x: 0, y: 0, z: 0}
+      force: 0
+      time: 0
+    shotDown:
+      dir: {x: 0, y: 0, z: 0}
+      force: 0
+      time: 0
+    weak:
+      time: 0
+    armor:
+      rate: 0
+    vulnerable:
+      rate: 0
+      time: 0
+    changeDamage:
+      rate: 0
+    sustainedInjury:
+      damage: 0
+  attackFromData: {fileID: 0}
   hitStunTime: 0
   canHitStun: 0
 --- !u!1 &6164447163453378808

+ 18 - 17
ActionTowerDefense/Assets/Resources/Prefab/Enemy/Enemy_1007.prefab

@@ -210,22 +210,7 @@ MonoBehaviour:
   isFreeze: 0
   canFreeze: 0
   curCharacterState: 0
-  hitStunTime: 0
-  canHitStun: 0
---- !u!114 &7039260392684945265
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1190225091429982147}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 1d04dd6e35d71724689001e450625c39, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  haveNewSpecialStates: 0
-  attackInfo:
+  attackInfoData:
     attackValue: 0
     damage: 0
     attackDir: {x: 0, y: 0, z: 0}
@@ -255,7 +240,21 @@ MonoBehaviour:
       rate: 0
     sustainedInjury:
       damage: 0
-  attackFrom: {fileID: 0}
+  attackFromData: {fileID: 0}
+  hitStunTime: 0
+  canHitStun: 0
+--- !u!114 &7039260392684945265
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1190225091429982147}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1d04dd6e35d71724689001e450625c39, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
   curSpecialStates: -1
   attributeTime: 0
   floatingState: 0
@@ -1234,6 +1233,8 @@ MonoBehaviour:
   sustainedInjury_IntervalTime: 0
   sustainedInjury_damage: 0
   heavyDamage: 0
+  killer: {fileID: 0}
+  exp: 10
   id: 0
   baseSortingOrder: 1001
   isBack: 0

+ 46 - 11
ActionTowerDefense/Assets/Resources/Prefab/MySoldier/Demonic_Arrow.prefab

@@ -1121,6 +1121,7 @@ GameObject:
   - component: {fileID: 8639832132491289351}
   - component: {fileID: 8639832132491289349}
   - component: {fileID: 6589564398742701796}
+  - component: {fileID: 7031356745553843355}
   m_Layer: 7
   m_Name: Demonic_Arrow
   m_TagString: Demonic
@@ -1169,9 +1170,9 @@ MonoBehaviour:
   mecanim: {fileID: 3354085511906294621}
   meshRenderer: {fileID: 0}
   ani: {fileID: 5978259926173120695}
-  totalDieKeepTime: 0
-  totalAttack_summonTime: 1.5333334
-  totalAttack_marchTime: 1
+  totalDieKeepTime: 0.10000001
+  totalAttack_summonTime: 0.7666667
+  totalAttack_marchTime: 1.3000001
   dieKeepTime: 0
   beHitDistance: 0.1
   attackDis: 0
@@ -1290,33 +1291,55 @@ MonoBehaviour:
     - attackMethod: 0
       attackType: 0
       startKeyName: attack_on
-      startKeyTime: 0.10000001
+      startKeyTime: 0.23333335
+      endType: 1
+      endKeyName: attack_off
+      endKeyTime: 0.3
+  - aniName: attack_march_backup
+    keys:
+    - attackMethod: 0
+      attackType: 0
+      startKeyName: attack_on
+      startKeyTime: 0.23333335
       endType: 1
       endKeyName: attack_off
-      endKeyTime: 0.33333334
+      endKeyTime: 0.3
   - aniName: attack_summon
     keys:
     - attackMethod: 0
       attackType: 0
       startKeyName: attack_on
-      startKeyTime: 0.033333335
+      startKeyTime: 0.13333334
       endType: 1
       endKeyName: attack_off
-      endKeyTime: 0.10000001
+      endKeyTime: 0.36666667
+  - aniName: attack_summon02
+    keys:
     - attackMethod: 0
       attackType: 0
       startKeyName: attack_on
-      startKeyTime: 0.16666667
+      startKeyTime: 0.23333335
       endType: 1
       endKeyName: attack_off
-      endKeyTime: 0.23333335
+      endKeyTime: 0.4666667
+  - aniName: attack_summon03
+    keys:
     - attackMethod: 0
       attackType: 0
       startKeyName: attack_on
-      startKeyTime: 0.3
+      startKeyTime: 0.10000001
       endType: 1
       endKeyName: attack_off
-      endKeyTime: 0.36666667
+      endKeyTime: 0.5
+  - aniName: fall
+    keys:
+    - attackMethod: 0
+      attackType: 0
+      startKeyName: attack_on
+      startKeyTime: 0.06666667
+      endType: 1
+      endKeyName: attack_off
+      endKeyTime: 0.6666667
   keyTimes: []
   attackTime: 0
   attackKeyCount: 0
@@ -1530,3 +1553,15 @@ MonoBehaviour:
     shootAlwaysTrack: 0
     skillPrefab: {fileID: 0}
     skill: {fileID: 0}
+--- !u!114 &7031356745553843355
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8639832132491289359}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fbe190f324f23354db9bd7d1ead1b60f, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 

+ 14 - 0
ActionTowerDefense/Assets/Resources/Prefab/MySoldier/Demonic_Giant.prefab

@@ -507,6 +507,7 @@ GameObject:
   - component: {fileID: 5440846222648032767}
   - component: {fileID: 5440846222648032765}
   - component: {fileID: 7709923136427189747}
+  - component: {fileID: 802636448221205106}
   m_Layer: 7
   m_Name: Demonic_Giant
   m_TagString: Demonic
@@ -620,6 +621,7 @@ MonoBehaviour:
   sustainedInjury_IntervalTime: 0
   sustainedInjury_damage: 0
   heavyDamage: 0
+  killer: {fileID: 0}
   soldierType: 2
   player: {fileID: 0}
   playerID: 0
@@ -894,6 +896,18 @@ MonoBehaviour:
     shootAlwaysTrack: 0
     skillPrefab: {fileID: 0}
     skill: {fileID: 0}
+--- !u!114 &802636448221205106
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5440846222648032759}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fbe190f324f23354db9bd7d1ead1b60f, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &6139679835290116115
 GameObject:
   m_ObjectHideFlags: 0

+ 15 - 0
ActionTowerDefense/Assets/Resources/Prefab/MySoldier/Demonic_Sword.prefab

@@ -138,6 +138,7 @@ GameObject:
   - component: {fileID: 2437299196472462353}
   - component: {fileID: 2437299196472462355}
   - component: {fileID: 6797330787108410633}
+  - component: {fileID: 434976657695320859}
   m_Layer: 7
   m_Name: Demonic_Sword
   m_TagString: Demonic
@@ -251,6 +252,8 @@ MonoBehaviour:
   sustainedInjury_IntervalTime: 0
   sustainedInjury_damage: 0
   heavyDamage: 0
+  killer: {fileID: 0}
+  soldierType: 0
   player: {fileID: 0}
   playerID: 0
   id: 0
@@ -560,6 +563,18 @@ MonoBehaviour:
     shootAlwaysTrack: 0
     skillPrefab: {fileID: 0}
     skill: {fileID: 0}
+--- !u!114 &434976657695320859
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2437299196472462361}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fbe190f324f23354db9bd7d1ead1b60f, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &2437299196663985757
 GameObject:
   m_ObjectHideFlags: 0

+ 42 - 0
ActionTowerDefense/Assets/Scenes/Game.unity

@@ -19980,6 +19980,7 @@ GameObject:
   - component: {fileID: 1714821088}
   - component: {fileID: 1714821089}
   - component: {fileID: 1714821090}
+  - component: {fileID: 1714821091}
   m_Layer: 0
   m_Name: GameManager
   m_TagString: Untagged
@@ -20079,10 +20080,51 @@ MonoBehaviour:
   ssexp:
   - st: 0
     curEXP: 0
+    level: 0
   - st: 0
     curEXP: 0
+    level: 0
   - st: 0
     curEXP: 0
+    level: 0
+  needEXP:
+  - st: 0
+    curEXP: 0
+    level: 0
+  - st: 0
+    curEXP: 0
+    level: 0
+  - st: 0
+    curEXP: 0
+    level: 0
+--- !u!114 &1714821091
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1714821084}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4d5827f0fa0c0104983cbcf4dc8cc942, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  seb:
+  - st: 0
+    summonAttack: 0
+    marchAttack: 0
+    hp: 0
+    armor: 0
+  - st: 0
+    summonAttack: 0
+    marchAttack: 0
+    hp: 0
+    armor: 0
+  - st: 0
+    summonAttack: 0
+    marchAttack: 0
+    hp: 0
+    armor: 0
 --- !u!1 &1729202001
 GameObject:
   m_ObjectHideFlags: 0

+ 7 - 0
ActionTowerDefense/Assets/Scripts/Characters/PlayerController.cs

@@ -87,6 +87,7 @@ public class PlayerController : MoveCharacter
     public float onlySummonTime;
     [HideInInspector]
     public float restSummonTime;
+    private SoldierLevelRecord slr;
        
     [HideInInspector]
     public float cacheDir;  //召唤的时候按左右召唤结束不会响应手感不好,缓存一下,召唤后摇期间有左右响应的话会转向
@@ -386,6 +387,11 @@ public class PlayerController : MoveCharacter
         fixedDeltaTime = Time.fixedDeltaTime;
     }
 
+    private void Start()
+    {
+        slr = GameManager.instance.GetComponent<SoldierLevelRecord>();
+    }
+
     override public void Update()
     {
         if (LBisHold)
@@ -1727,6 +1733,7 @@ public class PlayerController : MoveCharacter
         {
             ls.AddDenomic(demonic);
         }
+        slr.SoldierAddLevelBuff(demonic);
     }
 
     public void OnDemonicRecycle(Demonic demonic)

+ 42 - 0
ActionTowerDefense/Assets/Scripts/Characters/SoldierBuff.cs

@@ -0,0 +1,42 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class SoldierBuff : MonoBehaviour
+{
+    private Demonic dem;
+    private AttackController ac;
+    private AttributeStatus ats;
+
+    private void OnEnable()
+    {
+        dem = GetComponent<Demonic>();
+        ac = dem.attackController;
+        ats = dem.attributeStatus;
+    }
+
+    public void AddHP(int hp)
+    {
+        dem.totalHp += hp;
+        dem.hp += hp;
+        dem.uiHp.Show(dem.hp, dem.totalHp);
+    }
+
+    public void AddSummonAttack(int attack)
+    {
+        ac.attackMethod[0].attackInfo.damage += attack;
+    }
+
+    public void AddMarchAttack(int attack)
+    {
+        for(int i = 1; i < ac.attackMethod.Length; i++)
+        {
+            ac.attackMethod[i].attackInfo.damage += attack;
+        }
+    }
+
+    public void AddArmor(int armor)
+    {
+        ats.resistances.armor += armor;
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Characters/SoldierBuff.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fbe190f324f23354db9bd7d1ead1b60f
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 65 - 1
ActionTowerDefense/Assets/Scripts/Rougue/SoldierEXP.cs

@@ -13,21 +13,32 @@ public class SoldierEXP : MonoBehaviour
         [LabelText("士兵种类")]
         public SoldierType st;
         [DisplayOnly]
-        [LabelText("总经验值")]
         public int curEXP;
+        [DisplayOnly]
+        //士兵当前等级/升级到下一级是哪一级
+        public int level;
     }
 
+    //自己
     static public SoldierEXP expInstance;
 
     [DisplayOnly]
     [LabelText("每种士兵经验值")]
     public SingleSoldierEXP[] ssexp = new SingleSoldierEXP[3];
+    [LabelText("升到下一级所需的经验值")]
+    public SingleSoldierEXP[] needEXP = new SingleSoldierEXP[3];
+    private SingleSoldierLevel[] infos = new SingleSoldierLevel[3];
 
+    //表
     private List<SingleSoldierLevel> expList;
 
+    //读升级数据的脚本
+    private SoldierLevelRecord slr;
+
     private void OnEnable()
     {
         expInstance = this;
+        slr = GetComponent<SoldierLevelRecord>();
     }
 
     private void Start()
@@ -37,6 +48,10 @@ public class SoldierEXP : MonoBehaviour
         for (int i = 0; i < 3; i++)
         {
             ssexp[i].st = sts[i];
+            ssexp[i].level = 1;
+            needEXP[i].st = sts[i];
+            needEXP[i].level = 1;
+            SetNextEXP(sts[i]);
         }
     }
 
@@ -47,6 +62,55 @@ public class SoldierEXP : MonoBehaviour
             if (ssexp[i].st == st)
             {
                 ssexp[i].curEXP += exp;
+                JudgeEXP(st);
+                break;
+            }
+        }
+    }
+
+    private void JudgeEXP(SoldierType st)
+    {
+        for(int i = 0; i < 3; i++)
+        {
+            if (ssexp[i].st == st)
+            {
+                if (ssexp[i].curEXP >= needEXP[i].curEXP)
+                {
+                    //升级
+                    ssexp[i].level += 1;
+                    SingleSoldierLevel s = null;
+                    foreach (SingleSoldierLevel ssl in expList)
+                    {
+                        if (ssl.Level == ssexp[i].level && ssl.Soldier == st.ToString())
+                        {
+                            s = ssl;
+                            break;
+                        }
+                    }
+                    slr.ReadSoldierBuff(st, s);
+                    SetNextEXP(st);
+                }
+                break;
+            }
+        }
+    }
+
+    private void SetNextEXP(SoldierType st)
+    {
+        for(int i = 0; i < 3; i++)
+        {
+            if (needEXP[i].st == st)
+            {
+                needEXP[i].level += 1;
+                foreach(SingleSoldierLevel ssl in expList)
+                {
+                    if (ssl.Level == needEXP[i].level && ssl.Soldier == st.ToString())
+                    {
+                        needEXP[i].curEXP += ssl.EXP;
+                        infos[i] = ssl;
+                        break;
+                    }
+                }
                 break;
             }
         }

+ 60 - 0
ActionTowerDefense/Assets/Scripts/Rougue/SoldierLevelRecord.cs

@@ -0,0 +1,60 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using cfg;
+
+public class SoldierLevelRecord : MonoBehaviour
+{
+    [System.Serializable]
+    public struct SoldierExtraBuff
+    {
+        public SoldierType st;
+        public int summonAttack;
+        public int marchAttack;
+        public int hp;
+        public int armor;
+    }
+
+    [DisplayOnly]
+    public SoldierExtraBuff[] seb = new SoldierExtraBuff[3];
+    private SoldierBuff sb;
+
+    private void Start()
+    {
+        for(int i = 0; i < 3; i++)
+        {
+            seb[i].st = GameManager.instance.curSoldiers[i];
+        }
+    }
+
+    public void ReadSoldierBuff(SoldierType st, SingleSoldierLevel ssl)
+    {
+        for(int i = 0; i < 3; i++)
+        {
+            if (seb[i].st == st)
+            {
+                seb[i].summonAttack += ssl.SummonAttack;
+                seb[i].marchAttack += ssl.MarchAttack;
+                seb[i].hp += ssl.HP;
+                seb[i].armor += ssl.Armor;
+                break;
+            }
+        }
+    }
+
+    public void SoldierAddLevelBuff(Demonic dem)
+    {
+        for (int i = 0; i < 3; i++)
+        {
+            if (seb[i].st == dem.soldierType)
+            {
+                sb = dem.GetComponent<SoldierBuff>();
+                sb.AddSummonAttack(seb[i].summonAttack);
+                sb.AddMarchAttack(seb[i].marchAttack);
+                sb.AddHP(seb[i].hp);
+                sb.AddArmor(seb[i].armor);
+                break;
+            }
+        }
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Rougue/SoldierLevelRecord.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4d5827f0fa0c0104983cbcf4dc8cc942
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

文件差異過大導致無法顯示
+ 331 - 79
ActionTowerDefense/Assets/TextMesh Pro/Resources/Fonts & Materials/AaErMoXingShu-2 SDF.asset


+ 15 - 0
ActionTowerDefense/GenerateDatas/json/cfgsoldierlevel.json

@@ -1,6 +1,7 @@
 [
   {
     "Level": 2,
+    "Soldier": "spear",
     "EXP": 100,
     "SummonAttack": 0,
     "MarchAttack": 0,
@@ -9,6 +10,7 @@
   },
   {
     "Level": 3,
+    "Soldier": "spear",
     "EXP": 200,
     "SummonAttack": 10,
     "MarchAttack": 0,
@@ -17,6 +19,7 @@
   },
   {
     "Level": 4,
+    "Soldier": "spear",
     "EXP": 300,
     "SummonAttack": 0,
     "MarchAttack": 10,
@@ -25,6 +28,7 @@
   },
   {
     "Level": 5,
+    "Soldier": "spear",
     "EXP": 400,
     "SummonAttack": 0,
     "MarchAttack": 0,
@@ -33,6 +37,7 @@
   },
   {
     "Level": 6,
+    "Soldier": "spear",
     "EXP": 500,
     "SummonAttack": 0,
     "MarchAttack": 0,
@@ -41,6 +46,7 @@
   },
   {
     "Level": 2,
+    "Soldier": "sword",
     "EXP": 100,
     "SummonAttack": 0,
     "MarchAttack": 0,
@@ -49,6 +55,7 @@
   },
   {
     "Level": 3,
+    "Soldier": "sword",
     "EXP": 200,
     "SummonAttack": 10,
     "MarchAttack": 0,
@@ -57,6 +64,7 @@
   },
   {
     "Level": 4,
+    "Soldier": "sword",
     "EXP": 300,
     "SummonAttack": 0,
     "MarchAttack": 10,
@@ -65,6 +73,7 @@
   },
   {
     "Level": 5,
+    "Soldier": "sword",
     "EXP": 400,
     "SummonAttack": 0,
     "MarchAttack": 0,
@@ -73,6 +82,7 @@
   },
   {
     "Level": 6,
+    "Soldier": "sword",
     "EXP": 500,
     "SummonAttack": 0,
     "MarchAttack": 0,
@@ -81,6 +91,7 @@
   },
   {
     "Level": 2,
+    "Soldier": "shield",
     "EXP": 100,
     "SummonAttack": 0,
     "MarchAttack": 0,
@@ -89,6 +100,7 @@
   },
   {
     "Level": 3,
+    "Soldier": "shield",
     "EXP": 200,
     "SummonAttack": 10,
     "MarchAttack": 0,
@@ -97,6 +109,7 @@
   },
   {
     "Level": 4,
+    "Soldier": "shield",
     "EXP": 300,
     "SummonAttack": 0,
     "MarchAttack": 10,
@@ -105,6 +118,7 @@
   },
   {
     "Level": 5,
+    "Soldier": "shield",
     "EXP": 400,
     "SummonAttack": 0,
     "MarchAttack": 0,
@@ -113,6 +127,7 @@
   },
   {
     "Level": 6,
+    "Soldier": "shield",
     "EXP": 500,
     "SummonAttack": 0,
     "MarchAttack": 0,

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

@@ -1,24 +1,24 @@
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgBuilding.cs,B45865E94F67A1B2B9A59ADA4527217,1859,1732401186765
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgCreateBuilding.cs,B422E4BEC7D11DA1B193B26A05AA05E,1425,1732408056797
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgCreateEnemy.cs,3A9B470F9A1FA351330EA275C82C399,1404,1746171971758
-C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgEnemy.cs,AA55E3EA298642B35239B74ED55BFBB,1840,1747122184570
+C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgEnemy.cs,AA55E3EA298642B35239B74ED55BFBB,1840,1747389694171
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgSoldierLevel.cs,A08CC235369146A3251A76BCCA2B9E,1381,1747122184570
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleBuildingConfig.cs,E5CE78694DF91B719BA63E763E9F43B8,2416,1732401186765
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleCreateBuildingConfig.cs,579EDD7478123FC56C428118FC3B6CC,7233,1732415326448
-C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleCreateEnemyConfig.cs,CA03C9F1FF452E27956E7F4AB8B626C,5039,1747122184569
+C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleCreateEnemyConfig.cs,9218A87BEE9DC5194F881BDE72B49CB3,5272,1747389694171
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleEnemyConfig.cs,B959AABD6E72533BB8F544E6A69E145,4518,1747122184570
-C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleSoldierLevel.cs,4D21C7E2B75BCFFA3345750CBCB245,2652,1747122184570
+C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleSoldierLevel.cs,77E750CE27B4127A763BD984A8DFAE,2897,1747361934858
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Assets/Gen/Tables.cs,44F5C895116C91B4662FE298D1145C25,2106,1747122184570
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgbuilding.json,AF3B22476CACCDADACF8AC7C7D3E1594,446,1742267809190
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgcreatebuilding.json,96C5CE210B1AAAE686AF51DFFE8A0,5047,1741161232156
-C:/works_Szand/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgcreateenemy.json,44CC4C3E536BB6B3CB22A4EB0C53573,1234,1747109083143
-C:/works_Szand/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgenemy.json,55E4DB350A1C95B9A6420F9DB2725F5,3074,1747109083143
-C:/works_Szand/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgsoldierlevel.json,3FF0A5E917D031219D13632E2B5041EE,1848,1747210809214
+C:/works_Szand/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgcreateenemy.json,693B7C4817D6B05CF58A83D9B4A32CF,9002,1747389591745
+C:/works_Szand/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgenemy.json,ADB17763C631C6F3F82987884374E90,2763,1747389591745
+C:/works_Szand/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgsoldierlevel.json,2ACE1CA72E898A03F10504F1FA891DF,2228,1747361934858
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/__beans__.xlsx,98987DA7288FEE34BCD08EA883D425E,9603,1719819495252
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/__enums__.xlsx,D95915E233EB1E4EB87BE0557A2BFDD,9879,1732405824089
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/__tables__.xlsx,73191AB2DEBAFD4D21DA7ABF2F7F725,10283,1747122174507
-C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/出怪表.xlsx,8E5BDF5E66424D10E28D41943F87217,11383,1747109083145
-C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/怪物表.xlsx,F0663AB91BA145E2DD3396C98AB52455,10230,1747109083145
+C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/出怪表.xlsx,D932797C40C7F627BC42F42E6EB73D,13658,1747389591748
+C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/怪物表.xlsx,A49182DEDE2D373A1D0328091D9DF49,10148,1747389591749
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/建筑表.xlsx,9ED27CF7DE3417811979E297BF30B64,9615,1742267302330
 C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/建筑生成表.xlsx,9C4EC1B178B1C62A9927C281845B5AB9,17054,1737060324755
-C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/士兵等级属性表.xlsx,DA1E6129C7495B3A798FBEACF2A8E,12781,1747210801298
+C:/works_Szand/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/士兵等级属性表.xlsx,9D4984E3E7B927D5359BE52DB26040,12473,1747361922297

二進制
ActionTowerDefense/Luban/Config/Datas/士兵等级属性表.xlsx


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