ソースを参照

各对象层级根据配表自动设置功能,各对象死亡后回收功能

wulifu 1 年間 前
コミット
e62e17d0e1

+ 8 - 1
ActionTowerDefense/Assets/Gen/SingleEnemyConfig.cs

@@ -23,16 +23,18 @@ public sealed partial class SingleEnemyConfig :  Bright.Config.BeanBase
         { if(!_json["HP"].IsNumber) { throw new SerializationException(); }  HP = _json["HP"]; }
         { var __json0 = _json["Attack1"]; if(!__json0.IsArray) { throw new SerializationException(); } Attack1 = new System.Collections.Generic.List<int>(__json0.Count); foreach(JSONNode __e0 in __json0.Children) { int __v0;  { if(!__e0.IsNumber) { throw new SerializationException(); }  __v0 = __e0; }  Attack1.Add(__v0); }   }
         { var __json0 = _json["Attack2"]; if(!__json0.IsArray) { throw new SerializationException(); } Attack2 = new System.Collections.Generic.List<int>(__json0.Count); foreach(JSONNode __e0 in __json0.Children) { int __v0;  { if(!__e0.IsNumber) { throw new SerializationException(); }  __v0 = __e0; }  Attack2.Add(__v0); }   }
+        { if(!_json["SortingOrder"].IsNumber) { throw new SerializationException(); }  SortingOrder = _json["SortingOrder"]; }
         PostInit();
     }
 
-    public SingleEnemyConfig(int ID, string EnemyPrefab, int HP, System.Collections.Generic.List<int> Attack1, System.Collections.Generic.List<int> Attack2 ) 
+    public SingleEnemyConfig(int ID, string EnemyPrefab, int HP, System.Collections.Generic.List<int> Attack1, System.Collections.Generic.List<int> Attack2, int SortingOrder ) 
     {
         this.ID = ID;
         this.EnemyPrefab = EnemyPrefab;
         this.HP = HP;
         this.Attack1 = Attack1;
         this.Attack2 = Attack2;
+        this.SortingOrder = SortingOrder;
         PostInit();
     }
 
@@ -61,6 +63,10 @@ public sealed partial class SingleEnemyConfig :  Bright.Config.BeanBase
     /// Attack2攻击力
     /// </summary>
     public System.Collections.Generic.List<int> Attack2 { get; private set; }
+    /// <summary>
+    /// 基础显示层级(1000递增)
+    /// </summary>
+    public int SortingOrder { get; private set; }
 
     public const int __ID__ = 491839330;
     public override int GetTypeId() => __ID__;
@@ -82,6 +88,7 @@ public sealed partial class SingleEnemyConfig :  Bright.Config.BeanBase
         + "HP:" + HP + ","
         + "Attack1:" + Bright.Common.StringUtil.CollectionToString(Attack1) + ","
         + "Attack2:" + Bright.Common.StringUtil.CollectionToString(Attack2) + ","
+        + "SortingOrder:" + SortingOrder + ","
         + "}";
     }
     

+ 3 - 3
ActionTowerDefense/Assets/Resources/Prefab/Demonic_Arrow.prefab

@@ -278,8 +278,8 @@ MeshRenderer:
   m_AutoUVMaxDistance: 0.5
   m_AutoUVMaxAngle: 89
   m_LightmapParameters: {fileID: 0}
-  m_SortingLayerID: 0
-  m_SortingLayer: 0
+  m_SortingLayerID: -690842069
+  m_SortingLayer: 4
   m_SortingOrder: 0
   m_AdditionalVertexStreams: {fileID: 0}
 --- !u!95 &5978259926173120695
@@ -968,6 +968,7 @@ MonoBehaviour:
   state: 0
   attackTime: 0
   totalAttack1Time: 1.8
+  totalAttack2Time: 1.3
   isDie: 0
   totalHp: 100
   hp: 0
@@ -1000,7 +1001,6 @@ MonoBehaviour:
   totalHurtKeepTime: 0.5
   searchTrigger: {fileID: 3566347593191160092}
   searchState: 0
-  totalAttack2Time: 1.3
   targetTypes: 0400000005000000
   attackDistance: 10
   canFly: 0

+ 10 - 7
ActionTowerDefense/Assets/Resources/Prefab/Demonic_Giant.prefab

@@ -431,15 +431,23 @@ MonoBehaviour:
   state: 0
   attackTime: 0
   totalAttack1Time: 3.6
+  totalAttack2Time: 2.2
   isDie: 0
   totalHp: 100
   hp: 0
   attack1Infos:
+  - damage: 30
+    attackDir: {x: -1, y: 0, z: 0}
+    force: 1000
+  attack2Infos:
   - damage: 30
     attackDir: {x: -1, y: 0, z: 0}
     force: 1000
   attackTriggers:
   - {fileID: 7729941002223262554}
+  attackType: 0
+  bulletPrefab: {fileID: 0}
+  shootPos: []
   foot: {fileID: 5440846222604650418}
   extraRiseGravity: -28.8
   extraFallGravity: -14.4
@@ -448,12 +456,7 @@ MonoBehaviour:
   totalHurtKeepTime: 0.5
   searchTrigger: {fileID: 2932762729738363159}
   searchState: 0
-  totalAttack2Time: 2.2
   targetTypes: 0400000005000000
-  attack2Infos:
-  - damage: 30
-    attackDir: {x: -1, y: 0, z: 0}
-    force: 1000
   attackDistance: 3
   canFly: 0
   canHitFly: 0
@@ -722,8 +725,8 @@ MeshRenderer:
   m_AutoUVMaxDistance: 0.5
   m_AutoUVMaxAngle: 89
   m_LightmapParameters: {fileID: 0}
-  m_SortingLayerID: 0
-  m_SortingLayer: 0
+  m_SortingLayerID: -690842069
+  m_SortingLayer: 4
   m_SortingOrder: 0
   m_AdditionalVertexStreams: {fileID: 0}
 --- !u!95 &3333436509305836838

+ 10 - 7
ActionTowerDefense/Assets/Resources/Prefab/Demonic_Sword.prefab

@@ -174,15 +174,23 @@ MonoBehaviour:
   state: 0
   attackTime: 0
   totalAttack1Time: 1.25
+  totalAttack2Time: 1.8
   isDie: 0
   totalHp: 100
   hp: 0
   attack1Infos:
+  - damage: 30
+    attackDir: {x: -1, y: 0, z: 0}
+    force: 1000
+  attack2Infos:
   - damage: 30
     attackDir: {x: -1, y: 0, z: 0}
     force: 1000
   attackTriggers:
   - {fileID: 4347565098670608659}
+  attackType: 0
+  bulletPrefab: {fileID: 0}
+  shootPos: []
   foot: {fileID: 2437299196663985756}
   extraRiseGravity: -28.8
   extraFallGravity: -14.4
@@ -191,12 +199,7 @@ MonoBehaviour:
   totalHurtKeepTime: 0.5
   searchTrigger: {fileID: 5104552355235513707}
   searchState: 0
-  totalAttack2Time: 1.8
   targetTypes: 0400000005000000
-  attack2Infos:
-  - damage: 30
-    attackDir: {x: -1, y: 0, z: 0}
-    force: 1000
   attackDistance: 1.5
   canFly: 0
   canHitFly: 0
@@ -618,8 +621,8 @@ MeshRenderer:
   m_AutoUVMaxDistance: 0.5
   m_AutoUVMaxAngle: 89
   m_LightmapParameters: {fileID: 0}
-  m_SortingLayerID: 0
-  m_SortingLayer: 0
+  m_SortingLayerID: -690842069
+  m_SortingLayer: 4
   m_SortingOrder: 0
   m_AdditionalVertexStreams: {fileID: 0}
 --- !u!95 &6496896669866891404

+ 2 - 2
ActionTowerDefense/Assets/Resources/Prefab/Enemy_Arrow.prefab

@@ -278,8 +278,8 @@ MeshRenderer:
   m_AutoUVMaxDistance: 0.5
   m_AutoUVMaxAngle: 89
   m_LightmapParameters: {fileID: 0}
-  m_SortingLayerID: 0
-  m_SortingLayer: 0
+  m_SortingLayerID: 341237651
+  m_SortingLayer: 3
   m_SortingOrder: 0
   m_AdditionalVertexStreams: {fileID: 0}
 --- !u!95 &5978259926173120695

+ 2 - 2
ActionTowerDefense/Assets/Resources/Prefab/Enemy_Giant.prefab

@@ -727,8 +727,8 @@ MeshRenderer:
   m_AutoUVMaxDistance: 0.5
   m_AutoUVMaxAngle: 89
   m_LightmapParameters: {fileID: 0}
-  m_SortingLayerID: 0
-  m_SortingLayer: 0
+  m_SortingLayerID: 341237651
+  m_SortingLayer: 3
   m_SortingOrder: 0
   m_AdditionalVertexStreams: {fileID: 0}
 --- !u!95 &3333436509305836838

+ 11 - 7
ActionTowerDefense/Assets/Resources/Prefab/Enemy_Sword.prefab

@@ -226,15 +226,23 @@ MonoBehaviour:
   state: 0
   attackTime: 0
   totalAttack1Time: 1.25
+  totalAttack2Time: 1.8
   isDie: 0
   totalHp: 100
   hp: 0
   attack1Infos:
+  - damage: 30
+    attackDir: {x: -1, y: 0, z: 0}
+    force: 1000
+  attack2Infos:
   - damage: 30
     attackDir: {x: -1, y: 0, z: 0}
     force: 1000
   attackTriggers:
   - {fileID: 2280520615464243483}
+  attackType: 0
+  bulletPrefab: {fileID: 0}
+  shootPos: []
   foot: {fileID: 2437299196663985756}
   extraRiseGravity: -28.8
   extraFallGravity: -14.4
@@ -244,16 +252,12 @@ MonoBehaviour:
   searchTrigger: {fileID: 428784489592146076}
   jumpSpeed: 9
   searchState: 0
-  totalAttack2Time: 1.8
   targetTypes: 010000000300000002000000
-  attack2Infos:
-  - damage: 30
-    attackDir: {x: -1, y: 0, z: 0}
-    force: 1000
   attackDistance: 1.5
   canFly: 0
   canHitFly: 0
   targetCharacter: {fileID: 0}
+  attackRatio: 0
 --- !u!54 &2437299196472462355
 Rigidbody:
   m_ObjectHideFlags: 0
@@ -855,8 +859,8 @@ MeshRenderer:
   m_AutoUVMaxDistance: 0.5
   m_AutoUVMaxAngle: 89
   m_LightmapParameters: {fileID: 0}
-  m_SortingLayerID: 0
-  m_SortingLayer: 0
+  m_SortingLayerID: 341237651
+  m_SortingLayer: 3
   m_SortingOrder: 0
   m_AdditionalVertexStreams: {fileID: 0}
 --- !u!95 &6496896669866891404

+ 2 - 2
ActionTowerDefense/Assets/Resources/Prefab/Player.prefab

@@ -712,8 +712,8 @@ MeshRenderer:
   m_AutoUVMaxDistance: 0.5
   m_AutoUVMaxAngle: 89
   m_LightmapParameters: {fileID: 0}
-  m_SortingLayerID: 0
-  m_SortingLayer: 0
+  m_SortingLayerID: -1730265859
+  m_SortingLayer: 1
   m_SortingOrder: 0
   m_AdditionalVertexStreams: {fileID: 0}
 --- !u!95 &6197716555580445942

+ 6 - 6
ActionTowerDefense/Assets/Resources/Spine/demon_giant/demon_diant_Controller.controller

@@ -33,7 +33,7 @@ AnimationClip:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: attack1
-  serializedVersion: 7
+  serializedVersion: 6
   m_Legacy: 0
   m_Compressed: 0
   m_UseHighQualityCurve: 1
@@ -119,7 +119,7 @@ AnimationClip:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: idle
-  serializedVersion: 7
+  serializedVersion: 6
   m_Legacy: 0
   m_Compressed: 0
   m_UseHighQualityCurve: 1
@@ -205,7 +205,7 @@ AnimationClip:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: hitted
-  serializedVersion: 7
+  serializedVersion: 6
   m_Legacy: 0
   m_Compressed: 0
   m_UseHighQualityCurve: 1
@@ -282,7 +282,7 @@ AnimationClip:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: walk
-  serializedVersion: 7
+  serializedVersion: 6
   m_Legacy: 0
   m_Compressed: 0
   m_UseHighQualityCurve: 1
@@ -416,7 +416,7 @@ AnimationClip:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: die
-  serializedVersion: 7
+  serializedVersion: 6
   m_Legacy: 0
   m_Compressed: 0
   m_UseHighQualityCurve: 1
@@ -530,7 +530,7 @@ AnimationClip:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: attack2
-  serializedVersion: 7
+  serializedVersion: 6
   m_Legacy: 0
   m_Compressed: 0
   m_UseHighQualityCurve: 1

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

@@ -32,7 +32,7 @@ public class AttackTrigger : MonoBehaviour
             if (!triged)
             {
                 trigedObjs.Add(hitTrigger);
-                if (Util.CheckCanHit(owner.tag, hitTrigger.owner.tag))
+                if (Util.CheckCanHit(owner.tag, hitTrigger.owner.tag) && !hitTrigger.owner.isDie)
                 {
                     hitTrigger.BeHit(damage, force);
                 }

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

@@ -59,7 +59,7 @@ public class Bullet : MonoBehaviour
             if (!triged)
             {
                 trigedObjs.Add(hitTrigger);
-                if (Util.CheckCanHit(owner.tag, hitTrigger.owner.tag))
+                if (Util.CheckCanHit(owner.tag, hitTrigger.owner.tag) && !hitTrigger.owner.isDie)
                 {
                     switch (bulletType)
                     {

+ 16 - 3
ActionTowerDefense/Assets/Scripts/Character.cs

@@ -21,6 +21,7 @@ public class Character : MonoBehaviour
 {
     public SkeletonMecanim mecanim;
     public Skeleton skeleton;
+    public MeshRenderer meshRenderer;
 
     public Animator ani;
     public Animator aniCollider;
@@ -43,22 +44,29 @@ public class Character : MonoBehaviour
     public AttackType attackType;
     public GameObject bulletPrefab;
     public List<Transform> shootPos;
+    [HideInInspector]
+    public float dieKeepTime;
+    public float totalDieKeepTime = 2f;
 
     public virtual void Init()
     {
         if (!mecanim)
         {
             mecanim = GetComponentInChildren<SkeletonMecanim>();
+        }
+        if (skeleton == null)
+        {
             skeleton = mecanim.skeleton;
         }
+        if (!meshRenderer)
+        {
+            meshRenderer = mecanim.GetComponent<MeshRenderer>();
+        }
         if (!ani)
         {
             ani = GetComponentInChildren<Animator>();
         }
-    }
 
-    public virtual void Reload()
-    {
         hp = totalHp;
         uiHp.ShowHP(hp, totalHp);
         ChangeState(CharacterState.Idle);
@@ -212,4 +220,9 @@ public class Character : MonoBehaviour
         }
         ChangeState(CharacterState.Attack);
     }
+
+    public void SetSortingOrder(int order)
+    {
+        meshRenderer.sortingOrder = order;
+    }
 }

+ 14 - 18
ActionTowerDefense/Assets/Scripts/Demonic.cs

@@ -6,6 +6,7 @@ using UnityEngine;
 
 public class Demonic : MoveCharacter
 {
+    public int id;
     public SearchTrigger searchTrigger;
     public SearchState searchState;
     public List<TargetType> targetTypes;
@@ -17,22 +18,12 @@ public class Demonic : MoveCharacter
 
     private void Awake()
     {
-        if (!mecanim)
-        {
-            mecanim = GetComponentInChildren<SkeletonMecanim>();
-            skeleton = mecanim.skeleton;
-        }
-        if (!ani)
-        {
-            ani = GetComponentInChildren<Animator>();
-        }
+        
     }
 
-    public void BeSummon(int tHp)
+    private void OnDisable()
     {
-        totalHp = tHp;
-        hp = totalHp;
-        ChangeState(CharacterState.Idle);
+        PlayerController.instance.OnDemonicRecycle(this);
     }
 
     public override void FixedUpdate()
@@ -188,6 +179,7 @@ public class Demonic : MoveCharacter
         base.OnState();
         hurtKeepTime -= Time.deltaTime;
         attackTime -= Time.deltaTime;
+        dieKeepTime -= Time.deltaTime;
         Vector3 leftDir = GetMoveDir();
         bool isAttack = GetAttack();
         switch (state)
@@ -340,6 +332,14 @@ public class Demonic : MoveCharacter
                     break;
                 }
                 break;
+            case CharacterState.Die:
+                if (dieKeepTime <= 0)
+                {
+                    print("Die:" + gameObject.name);
+                    gameObject.SetActive(false);
+                    break;
+                }
+                break;
             default:
                 break;
         }
@@ -404,14 +404,10 @@ public class Demonic : MoveCharacter
                 ani.Play("die", 0, 0);
                 aniCollider.Play("Die", 0, 0);
                 isDie = true;
+                dieKeepTime = totalDieKeepTime;
                 break;
             default:
                 break;
         }
     }
-
-    public override void BeHit(int damage, Vector3 force)
-    {
-        base.BeHit(damage, force);
-    }
 }

+ 16 - 11
ActionTowerDefense/Assets/Scripts/Enemy.cs

@@ -30,6 +30,7 @@ public enum SearchState
 
 public class Enemy : MoveCharacter
 {
+    public int id;
     public SearchTrigger searchTrigger;
     public float jumpSpeed = 10;
     public SearchState searchState;
@@ -43,18 +44,17 @@ public class Enemy : MoveCharacter
 
     private void Awake()
     {
-        Init();
-        Reload();
+        
     }
 
-    public override void Init()
+    public void OnDisable()
     {
-        base.Init();
+        EnemyCreater.instance.OnEnemyRecycle(this);
     }
 
-    public override void Reload()
+    public override void Init()
     {
-        base.Reload();
+        base.Init();
         ChangeSearchState(SearchState.NoTarget);
     }
 
@@ -131,6 +131,7 @@ public class Enemy : MoveCharacter
         base.OnState();
         hurtKeepTime -= Time.deltaTime;
         attackTime -= Time.deltaTime;
+        dieKeepTime -= Time.deltaTime;
         Vector3 leftDir = GetMoveDir();
         bool isAttack = GetAttack();
         switch (state)
@@ -283,6 +284,13 @@ public class Enemy : MoveCharacter
                     break;
                 }
                 break;
+            case CharacterState.Die:
+                if (dieKeepTime <= 0)
+                {
+                    gameObject.SetActive(false);
+                    break;
+                }
+                break;
             default:
                 break;
         }
@@ -347,6 +355,7 @@ public class Enemy : MoveCharacter
                 ani.Play("die", 0, 0);
                 aniCollider.Play("Die", 0, 0);
                 isDie = true;
+                dieKeepTime = totalDieKeepTime;
                 break;
             default:
                 break;
@@ -467,9 +476,5 @@ public class Enemy : MoveCharacter
                 break;
         }
     }
-
-    public override void BeHit(int damage, Vector3 force)
-    {
-        base.BeHit(damage, force);
-    }
+    
 }

+ 24 - 0
ActionTowerDefense/Assets/Scripts/EnemyCreater.cs

@@ -10,6 +10,7 @@ public class EnemyCreater : MonoBehaviour
     public static EnemyCreater instance;
     public List<SingleCreateEnemyConfig> cfgCreateEnemy;
     public List<bool> created;
+    public Dictionary<int, List<Enemy>> enemyDic;
 
     private void Awake()
     {
@@ -22,6 +23,7 @@ public class EnemyCreater : MonoBehaviour
             DestroyImmediate(gameObject);
             return;
         }
+        enemyDic = new Dictionary<int, List<Enemy>>();
     }
 
     private void Start()
@@ -66,6 +68,12 @@ public class EnemyCreater : MonoBehaviour
         SingleEnemyConfig cfgEnemy = GameManager.instance.allCfgData.CfgEnemy.Get(enemyId);
         GameObject enemyObj = Util.Instantiate(cfgEnemy.EnemyPrefab, pos);
         Enemy enemy = enemyObj.GetComponent<Enemy>();
+        enemy.id = enemyId;
+        if (!enemyDic.ContainsKey(enemyId))
+        {
+            enemyDic.Add(enemyId, new List<Enemy>());
+        }
+        enemyDic[enemyId].Add(enemy);
         enemy.totalHp = (int)(cfgEnemy.HP * hpRatio);
         for (int i = 0; i < cfgEnemy.Attack1.Count; i++)
         {
@@ -79,5 +87,21 @@ public class EnemyCreater : MonoBehaviour
             attackInfo.damage = (int)(cfgEnemy.Attack2[i] * attackRatio);
             enemy.attack2Infos[i] = attackInfo;
         }
+        enemy.Init();
+        enemy.SetSortingOrder(cfgEnemy.SortingOrder + enemyDic[enemyId].Count);
+    }
+
+    public void OnEnemyRecycle(Enemy enemy)
+    {
+        if (!enemyDic.ContainsKey(enemy.id))
+        {
+            return;
+        }
+        enemyDic[enemy.id].Remove(enemy);
+        SingleEnemyConfig cfgEnemy = GameManager.instance.allCfgData.CfgEnemy.Get(enemy.id);
+        for (int i = 0; i < enemyDic[enemy.id].Count; i++)
+        {
+            enemyDic[enemy.id][i].SetSortingOrder(cfgEnemy.SortingOrder + i);
+        }
     }
 }

+ 42 - 14
ActionTowerDefense/Assets/Scripts/PlayerController.cs

@@ -9,6 +9,8 @@ using System.ComponentModel;
 using Unity.VisualScripting;
 using System;
 using Base.Common;
+using cfg;
+using static UnityEngine.EventSystems.EventTrigger;
 
 [Serializable]
 public struct AttackInfo
@@ -20,9 +22,11 @@ public struct AttackInfo
 
 public class PlayerController : MoveCharacter
 {
+    public static PlayerController instance;
 
     public List<GameObject> demonicPrefabs;
     public List<Vector3> demonicSummonPos;
+    public Dictionary<int, List<Demonic>> demonicDic;
 
     public float jumpSpeed = 10;
     public float airJumpSpeed = 10;
@@ -142,18 +146,17 @@ public class PlayerController : MoveCharacter
 
     private void Awake()
     {
+        if (!instance)
+        {
+            instance = this;
+        }
+        else
+        {
+            DestroyImmediate(gameObject);
+            return;
+        }
+        demonicDic = new Dictionary<int, List<Demonic>>();
         Init();
-        Reload();
-    }
-
-    public override void Init()
-    {
-        base.Init();
-    }
-
-    public override void Reload()
-    {
-        base.Reload();
     }
 
     private void Update()
@@ -379,6 +382,7 @@ public class PlayerController : MoveCharacter
         summonTime -= Time.deltaTime;
         rushTime -= Time.deltaTime;
         cacheRushTime -= Time.deltaTime;
+        dieKeepTime -= Time.deltaTime;
         switch (state)
         {
             case CharacterState.Idle:
@@ -542,6 +546,13 @@ public class PlayerController : MoveCharacter
                     rb.velocity = Vector3.right * rushSpeed;
                 }
                 break;
+            case CharacterState.Die:
+                if (dieKeepTime <= 0)
+                {
+                    gameObject.SetActive(false);
+                    break;
+                }
+                break;
             default:
                 break;
         }
@@ -638,6 +649,7 @@ public class PlayerController : MoveCharacter
                 aniCollider.Play("Die", 0, 0);
                 ani.Play("die", 0, 0);
                 isDie = true;
+                dieKeepTime = totalDieKeepTime;
                 break;
             default:
                 break;
@@ -693,6 +705,12 @@ public class PlayerController : MoveCharacter
         GameObject prefab = demonicPrefabs[id];
         GameObject demonicObj = PoolManager.Instantiate(prefab);
         Demonic demonic = demonicObj.GetComponent<Demonic>();
+        demonic.id = id;
+        if (!demonicDic.ContainsKey(id))
+        {
+            demonicDic.Add(id, new List<Demonic>());
+        }
+        demonicDic[id].Add(demonic);
         demonicObj.transform.parent = null;
         demonicObj.transform.localEulerAngles = Vector3.zero;
         demonicObj.transform.localScale = new Vector3(1, 1, 1);
@@ -713,12 +731,22 @@ public class PlayerController : MoveCharacter
                 demonic.Turn();
             }
         }
-        demonic.BeSummon(100);
+        demonic.totalHp = 100;
+        demonic.Init();
+        demonic.SetSortingOrder(id * 1000 + demonicDic[id].Count);
         demonic.Attack1();
     }
 
-    public override void BeHit(int damage, Vector3 force)
+    public void OnDemonicRecycle(Demonic demonic)
     {
-        base.BeHit(damage, force);
+        if (!demonicDic.ContainsKey(demonic.id))
+        {
+            return;
+        }
+        demonicDic[demonic.id].Remove(demonic);
+        for (int i = 0; i < demonicDic[demonic.id].Count; i++)
+        {
+            demonicDic[demonic.id][i].SetSortingOrder(demonic.id * 1000 + i);
+        }
     }
 }

+ 6 - 3
ActionTowerDefense/GenerateDatas/json/cfgenemy.json

@@ -8,7 +8,8 @@
     ],
     "Attack2": [
       30
-    ]
+    ],
+    "SortingOrder": 0
   },
   {
     "ID": 2,
@@ -19,7 +20,8 @@
     ],
     "Attack2": [
       30
-    ]
+    ],
+    "SortingOrder": 1000
   },
   {
     "ID": 3,
@@ -30,6 +32,7 @@
     ],
     "Attack2": [
       30
-    ]
+    ],
+    "SortingOrder": 2000
   }
 ]

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

@@ -72,12 +72,12 @@ H:/PartyGame4/PartyGame/Luban/Config/Datas/装扮表.xlsx,592143E0D76443B3BCA6D2
 H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgCreateEnemy.cs,3A9B470F9A1FA351330EA275C82C399,1404,1711097150748
 H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Assets/Gen/CfgEnemy.cs,FDE1CE1B09C67F343EE84B2F88F27A6,1820,1711369259455
 H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleCreateEnemyConfig.cs,A4477C595E7DF3FF2861CE739014897E,4015,1711367905740
-H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleEnemyConfig.cs,D5F643F55C5C4765F3F8EFC19A64C96,3343,1711368142177
+H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Assets/Gen/SingleEnemyConfig.cs,52D50AA62346441E5CF6FB54B178584,3703,1711462762532
 H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Assets/Gen/Tables.cs,912B477615DA4F7C6B7D4A0EE96B27A,1296,1711097150748
 H:/UnityProject/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgcreateenemy.json,C3878B2549AEBF244738676A27CA889,612,1711451634187
-H:/UnityProject/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgenemy.json,D57A07DD5315F73724F29B6AD4AD0CE,465,1711451634187
+H:/UnityProject/ActionTowerDefense/ActionTowerDefense/GenerateDatas/json/cfgenemy.json,B858FE72874E534BCA58B825D99A7B9D,543,1711462762532
 H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/__beans__.xlsx,98987DA7288FEE34BCD08EA883D425E,9603,1711095806628
 H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/__enums__.xlsx,647733322F7261DFA483C2DBE2D1F9A4,10293,1711095790814
 H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/__tables__.xlsx,D1BC5823EBCE916872405D2DCDC896D,10232,1711369251824
 H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/出怪表.xlsx,60F9EEC2C6B3EF44C848DAF64F9E20,10441,1711451627767
-H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/怪物表.xlsx,B3CE60405656324CFE12E41F819DDD62,10085,1711451611942
+H:/UnityProject/ActionTowerDefense/ActionTowerDefense/Luban/Config/Datas/怪物表.xlsx,D6B0DED7153ACAF381885319BC4578C,10192,1711462754530

BIN
ActionTowerDefense/Luban/Config/Datas/怪物表.xlsx


+ 18 - 0
ActionTowerDefense/ProjectSettings/TagManager.asset

@@ -43,6 +43,24 @@ TagManager:
   - 
   - 
   m_SortingLayers:
+  - name: BackGround
+    uniqueID: 641191679
+    locked: 0
   - name: Default
     uniqueID: 0
     locked: 0
+  - name: EnemyTower
+    uniqueID: 2480274041
+    locked: 0
+  - name: Tower
+    uniqueID: 4071028539
+    locked: 0
+  - name: Enemy
+    uniqueID: 341237651
+    locked: 0
+  - name: Demonic
+    uniqueID: 3604125227
+    locked: 0
+  - name: Player
+    uniqueID: 2564701437
+    locked: 0