瀏覽代碼

Merge branch 'master' of http://192.168.123.2:3000/fort23/XY001

# Conflicts:
#	UserSettings/Layouts/default-2022.dwlt   resolved by origin/master(远端) version
李桃 7 月之前
父節點
當前提交
321c47d355
共有 30 個文件被更改,包括 5467 次插入550 次删除
  1. 1 2
      Assembly-CSharp.csproj
  2. 1 131
      Assets/Art/HeroTimeLine/Hero03.playable
  3. 7 3
      Assets/Res/Config/SkillConfig.json
  4. 0 0
      Assets/Res/TimeLineAssets/Guaiwu01_TD.txt
  5. 0 0
      Assets/Res/TimeLineAssets/Hero03_TD.txt
  6. 0 0
      Assets/Res/TimeLineAssets/Hero04_TD.txt
  7. 4832 0
      Assets/Scenes/testCombat.scene
  8. 1 1
      Assets/Scripts/Core/Event/EasyEvent.cs
  9. 16 0
      Assets/Scripts/Core/Triiger/ExitEventGameObject.cs
  10. 3 0
      Assets/Scripts/Core/Triiger/ExitEventGameObject.cs.meta
  11. 9 7
      Assets/Scripts/Core/Triiger/OnTriggerEnterEventTrigger.cs
  12. 2 2
      Assets/Scripts/GameData/ExcelConfig/SkillConfig.cs
  13. 13 0
      Assets/Scripts/GameLogic/Combat/Hero/CombatHeroEntity.cs
  14. 10 2
      Assets/Scripts/GameLogic/Combat/Hero/CombatHeroSkillControl.cs
  15. 8 1
      Assets/Scripts/GameLogic/Combat/Hero/CombatHeroTimeLineControl.cs
  16. 1 0
      Assets/Scripts/GameLogic/Combat/Hero/State/CombatHeroAttState.cs
  17. 35 11
      Assets/Scripts/GameLogic/Combat/Skill/S30001.cs
  18. 2 1
      Assets/Scripts/GameLogic/Combat/Skill/SkillBasic.cs
  19. 8 0
      Assets/Scripts/GameLogic/Paritcle/CombatParticleSystemPool.cs
  20. 23 21
      Assets/Scripts/GameLogic/Paritcle/GameTimeLineParticleFactory.cs
  21. 16 0
      Assets/Scripts/GameTimeLine/CustomizeTimeLogic/FxLogic/TimeLineEventLogic/TimeLineAlertLogic.cs
  22. 5 3
      Assets/Scripts/GameTimeLine/CustomizeTimeLogic/FxLogic/TimeLineEventLogic/TimeLineEventParticleLogicBasic.cs
  23. 13 6
      Assets/Scripts/GameTimeLine/CustomizeTimeLogic/FxLogic/TimeLineEventLogicBasic.cs
  24. 17 0
      Assets/Scripts/GameTimeLine/CustomizeTimeLogic/FxLogic/TimeLineEventLogicGroupBasic.cs
  25. 0 0
      Assets/StreamingAssets/assetConfig.txt
  26. 二進制
      Excel2Json/Excel/skill.xlsx
  27. 1 0
      Fort23.Core.csproj
  28. 0 0
      Release/PC/1.1.1/Bundle/assetConfig.txt
  29. 439 355
      UserSettings/Layouts/default-2022.dwlt
  30. 4 4
      XY001.sln

文件差異過大導致無法顯示
+ 1 - 2
Assembly-CSharp.csproj


+ 1 - 131
Assets/Art/HeroTimeLine/Hero03.playable

@@ -268,43 +268,6 @@ MonoBehaviour:
   m_Clips: []
   m_Markers:
     m_Objects: []
---- !u!114 &-8763715666762063956
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 0}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: f1fc88ca9f5b46d2929d20f65fbe5c4e, type: 3}
-  m_Name: TimeLineParticleSystemAsset
-  m_EditorClassIdentifier: 
-  sourceGameObject:
-    exposedName: 700512f659d2a464bbc3462b672232e8
-    defaultValue: {fileID: 0}
-  prefabGameObject: {fileID: 0}
-  updateParticle: 1
-  particleRandomSeed: 3387
-  updateDirector: 1
-  updateITimeControl: 1
-  searchHierarchy: 0
-  active: 1
-  postPlayback: 2
-  targetType: 2
-  LocationType: 6
-  targetSpecialDotName: hitpos
-  hitPointGroupName: 
-  isGround: 0
-  isFollowTarget: 0
-  isNotRotate: 0
-  isFollowRootTarget: 0
-  isAttSpeed: 0
-  isLoop: 1
-  loopAlone: 0
-  isActivityCustomTargetPos: 0
-  CustomTargetPosIndex: 0
-  intervalTime: 0
 --- !u!114 &-8321791609121765805
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -1750,7 +1713,6 @@ MonoBehaviour:
   m_Children:
   - {fileID: -5700901883387235338}
   - {fileID: 1674232180069977348}
-  - {fileID: 4462664296131566262}
   - {fileID: -5213821412162879996}
   m_Clips: []
   m_Markers:
@@ -1957,98 +1919,6 @@ MonoBehaviour:
     m_DisplayName: fx_hero03_sk_hit
   m_Markers:
     m_Objects: []
---- !u!114 &4462664296131566262
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 0}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 15e0374501f39d54eb30235764636e0e, type: 3}
-  m_Name: Control Track (1)
-  m_EditorClassIdentifier: 
-  m_Version: 3
-  m_AnimClip: {fileID: 0}
-  m_Locked: 0
-  m_Muted: 0
-  m_CustomPlayableFullTypename: 
-  m_Curves: {fileID: 0}
-  m_Parent: {fileID: 2664366215323630651}
-  m_Children: []
-  m_Clips:
-  - m_Version: 1
-    m_Start: 0.2
-    m_ClipIn: 0
-    m_Asset: {fileID: -8763715666762063956}
-    m_Duration: 1
-    m_TimeScale: 1
-    m_ParentTrack: {fileID: 4462664296131566262}
-    m_EaseInDuration: 0
-    m_EaseOutDuration: 0
-    m_BlendInDuration: 0
-    m_BlendOutDuration: 0
-    m_MixInCurve:
-      serializedVersion: 2
-      m_Curve:
-      - serializedVersion: 3
-        time: 0
-        value: 0
-        inSlope: 0
-        outSlope: 0
-        tangentMode: 0
-        weightedMode: 0
-        inWeight: 0
-        outWeight: 0
-      - serializedVersion: 3
-        time: 1
-        value: 1
-        inSlope: 0
-        outSlope: 0
-        tangentMode: 0
-        weightedMode: 0
-        inWeight: 0
-        outWeight: 0
-      m_PreInfinity: 2
-      m_PostInfinity: 2
-      m_RotationOrder: 4
-    m_MixOutCurve:
-      serializedVersion: 2
-      m_Curve:
-      - serializedVersion: 3
-        time: 0
-        value: 1
-        inSlope: 0
-        outSlope: 0
-        tangentMode: 0
-        weightedMode: 0
-        inWeight: 0
-        outWeight: 0
-      - serializedVersion: 3
-        time: 1
-        value: 0
-        inSlope: 0
-        outSlope: 0
-        tangentMode: 0
-        weightedMode: 0
-        inWeight: 0
-        outWeight: 0
-      m_PreInfinity: 2
-      m_PostInfinity: 2
-      m_RotationOrder: 4
-    m_BlendInCurveMode: 0
-    m_BlendOutCurveMode: 0
-    m_ExposedParameterNames: []
-    m_AnimationCurves: {fileID: 0}
-    m_Recordable: 0
-    m_PostExtrapolationMode: 0
-    m_PreExtrapolationMode: 0
-    m_PostExtrapolationTime: 0
-    m_PreExtrapolationTime: 0
-    m_DisplayName: fx_hero03_sk_hit
-  m_Markers:
-    m_Objects: []
 --- !u!114 &4604074310167554918
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -2280,7 +2150,7 @@ MonoBehaviour:
   isGround: 0
   isFollowTarget: 0
   isNotRotate: 0
-  isFollowRootTarget: 0
+  isFollowRootTarget: 1
   isAttSpeed: 0
   isLoop: 1
   loopAlone: 0

+ 7 - 3
Assets/Res/Config/SkillConfig.json

@@ -4,6 +4,7 @@
       "ID": 10011,
       "scriptName": "NormalSkill",
       "IDGroup": 1001,
+      "cd": null,
       "SkillType": 1,
       "level": 1,
       "name": 405077,
@@ -15,7 +16,8 @@
       "ID": 100011,
       "scriptName": "S10001",
       "IDGroup": 1001,
-      "SkillType": 1,
+      "cd": 3,
+      "SkillType": 2,
       "level": 1,
       "name": 405077,
       "effectValue": [
@@ -26,11 +28,13 @@
       "ID": 300011,
       "scriptName": "S30001",
       "IDGroup": 1001,
-      "SkillType": 1,
+      "cd": 5,
+      "SkillType": 2,
       "level": 1,
       "name": 405077,
       "effectValue": [
-        200.0
+        200.0,
+        3.0
       ]
     }
   ]

文件差異過大導致無法顯示
+ 0 - 0
Assets/Res/TimeLineAssets/Guaiwu01_TD.txt


文件差異過大導致無法顯示
+ 0 - 0
Assets/Res/TimeLineAssets/Hero03_TD.txt


文件差異過大導致無法顯示
+ 0 - 0
Assets/Res/TimeLineAssets/Hero04_TD.txt


文件差異過大導致無法顯示
+ 4832 - 0
Assets/Scenes/testCombat.scene


+ 1 - 1
Assets/Scripts/Core/Event/EasyEvent.cs

@@ -58,7 +58,7 @@ public class EasyEvent<T> : IEasyEvent
 
 
     public void Trigger(T t) => mOnEvent?.Invoke(t);
-
+    public void Close() => mOnEvent = null;
     IUnRegister IEasyEvent.Register(Action onEvent)
     {
         return Register(Action);

+ 16 - 0
Assets/Scripts/Core/Triiger/ExitEventGameObject.cs

@@ -0,0 +1,16 @@
+using System;
+using UnityEngine;
+
+namespace Core.Triiger
+{
+    public class ExitEventGameObject : MonoBehaviour
+    {
+        public  System.Action<Collider> OnCollisionExitEvent ;
+
+        public Collider Collider;
+        private void OnDisable()
+        {
+            OnCollisionExitEvent?.Invoke(Collider);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/Core/Triiger/ExitEventGameObject.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 562914902edb49e28deb8c7f10e9dd4a
+timeCreated: 1731985484

+ 9 - 7
Assets/Scripts/Core/Triiger/OnTriggerEnterEventTrigger.cs

@@ -22,16 +22,18 @@ namespace Core.Triiger
 
     public static class OnTriggerEnterEventTriggerExtension
     {
-        public static IUnRegister OnTriggerEnterEvent<T>(this T self, Action<Collider> onTriggerEnter)
-            where T : Component
-        {
-            return self.GetOrAddComponent<OnTriggerEnterEventTrigger>().OnTriggerEnterEvent
-                .Register(onTriggerEnter);
-        }
+        // public static IUnRegister OnTriggerEnterEvent<T>(this T self, Action<Collider> onTriggerEnter)
+        //     where T : Component
+        // {
+        //     return self.GetOrAddComponent<OnTriggerEnterEventTrigger>().OnTriggerEnterEvent
+        //         .Register(onTriggerEnter);
+        // }
         
         public static IUnRegister OnTriggerEnterEvent(this GameObject self, Action<Collider> onTriggerEnter)
         {
-            return self.GetOrAddComponent<OnTriggerEnterEventTrigger>().OnTriggerEnterEvent
+            OnTriggerEnterEventTrigger onTriggerEnterEventTrigger=  self.GetOrAddComponent<OnTriggerEnterEventTrigger>();
+            onTriggerEnterEventTrigger.OnTriggerEnterEvent.Close();
+            return onTriggerEnterEventTrigger.OnTriggerEnterEvent
                 .Register(onTriggerEnter);
         }
     }

+ 2 - 2
Assets/Scripts/GameData/ExcelConfig/SkillConfig.cs

@@ -34,9 +34,9 @@ public int IDGroup;
 
 
 		/// <summary>
-		///关联技能组
+		///技能Cd,普攻没有CD
 		/// </summary>
-public int[] WeaponSkillGroup;
+public int cd;
 
 
 		/// <summary>

+ 13 - 0
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroEntity.cs

@@ -2,6 +2,7 @@ using System.Collections;
 using System.Collections.Generic;
 using Animancer;
 using Common.Utility.CombatEvent;
+using Fort23.Common;
 using Fort23.Core;
 using Fort23.UTool;
 using GameLogic.Combat.CombatTool;
@@ -25,6 +26,7 @@ public class CombatHeroEntity : ITimeLineSpecialDotPos, ILifeCycle, ITimeLineAni
     public CombatHeroSkillControl CombatHeroSkillControl;
 
     public bool isFollowState;
+    public BetterList<CombatParticleSystemPool> heroLoopParticle=new BetterList<CombatParticleSystemPool>();
     public Vector3 dotPos
     {
         get { return combatHeroGameObject.position; }
@@ -162,12 +164,23 @@ public class CombatHeroEntity : ITimeLineSpecialDotPos, ILifeCycle, ITimeLineAni
         }
     }
 
+    public void CloseLoopFx()
+    {
+        for (int i = 0; i < heroLoopParticle.Count; i++)
+        {
+            GObjectPool.Instance.Recycle(heroLoopParticle[i]);
+        }
+        heroLoopParticle.Clear();
+    }
+
     public void Dispose()
     {
+        
         CombatHeroSkillControl.Dispose();
         combatHeroGameObject.Dispose();
         CombatAIBasic.Dispose();
         combatHeroTimeLineControl.Dispose();
         combatHeroAnimtion.Dispose();
+        CloseLoopFx();
     }
 }

+ 10 - 2
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroSkillControl.cs

@@ -114,8 +114,16 @@ namespace GameLogic.Combat.Hero
             for (int i = 0; i < allSkill.size; i++)
             {
                 SkillBasic skillBasic = allSkill[i];
-                skillBasic.CombatUpdate(i);
-                skillBasic.ReduceCd(t);
+                skillBasic.CombatUpdate(t);
+                if (skillBasic.SelfSkillConfig.SkillType!=1&&!SkillCommands.Contains(skillBasic) && currUseSkill != skillBasic)
+                {
+                    skillBasic.ReduceCd(t);
+                    if (skillBasic.SkillCd <= 0)
+                    {
+                        skillBasic.SkillCd = skillBasic.SkillMaxCd;
+                        AddCommandSkill(skillBasic);
+                    }
+                }
             }
 
             NormalAttCd -= t;

+ 8 - 1
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroTimeLineControl.cs

@@ -34,7 +34,14 @@ namespace GameLogic.Combat.Hero
         {
             for (int i = 0; i < _currRunEventLogicGroupList.size; i++)
             {
-                _currRunEventLogicGroupList[i].Update(deltaTime);
+                TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic = _currRunEventLogicGroupList[i];
+                bool isEnd = timeLineEventLogicGroupBasic.Update(deltaTime);
+                if (isEnd)
+                {
+                    timeLineEventLogicGroupBasic.UpdateEndFinish();
+                    _currRunEventLogicGroupList.RemoveAt(i);
+                    i--;
+                }
             }
         }
 

+ 1 - 0
Assets/Scripts/GameLogic/Combat/Hero/State/CombatHeroAttState.cs

@@ -34,6 +34,7 @@ namespace GameLogic.Combat.Hero.State
                 skillBasic.BreakSkill();
             }
 
+            combatHeroEntity.CombatHeroSkillControl.currUseSkill = null;
             skillBasic = null;
         }
     }

+ 35 - 11
Assets/Scripts/GameLogic/Combat/Skill/S30001.cs

@@ -8,18 +8,21 @@ namespace GameLogic.Combat.Skill
     /// <summary>
     /// 火烧
     /// </summary>
-    public class S30001: SkillBasic
+    public class S30001 : SkillBasic
     {
         protected float _harm;
-
+        protected float _maxTime;
         protected float _currTime;
         private BetterList<ILifetCycleHitPoint> _currTrigger = new BetterList<ILifetCycleHitPoint>();
         protected TimeLineEventLogicGroupBasic loopGroupBasic;
         protected TimeLineEventLogicGroupBasic currMyLoopGroupBasic;
         protected bool _isUpdate;
+        protected float _currAllTime;
+
         protected override void ProInitSkill()
         {
             _harm = 200;
+            _maxTime = 3;
         }
 
         // protected override ILifetCycleHitPoint[] ProGetTineLineTargetEntity(
@@ -37,9 +40,11 @@ namespace GameLogic.Combat.Skill
 
         protected override void ProUseSkill()
         {
-            _finishTimeLineGroupName = "";
-            currMyLoopGroupBasic=  ActivationTimeLineData("sk1");
+            _finishTimeLineGroupName = "-1";
+            currMyLoopGroupBasic = ActivationTimeLineData("sk1");
             _isUpdate = true;
+            _currTime = 0;
+            _currAllTime = 0;
         }
 
         protected override void ProBreakSkill()
@@ -49,13 +54,24 @@ namespace GameLogic.Combat.Skill
 
         protected void Finish()
         {
-            currMyLoopGroupBasic?.CloseLoopFx();
+            currMyLoopGroupBasic?.BreakTimeLine();
+            if (loopGroupBasic != null)
+            {
+                loopGroupBasic.BreakTimeLine();
+            }
+
+            loopGroupBasic = null;
             _isUpdate = false;
             SpecialDotInfo specialDotInfo = CombatHeroEntity.GetMainHotPoin<ILifetCycleHitPoint>(true)
                 .GetSpecialDotInfo("sk1_trigger");
             specialDotInfo.targetTran.gameObject.SetActive(false);
         }
 
+        protected override void ProSkillPlayFinish()
+        {
+            Finish();
+        }
+
         protected override void ProCombatUpdate(float time)
         {
             if (!_isUpdate)
@@ -64,14 +80,16 @@ namespace GameLogic.Combat.Skill
             }
 
             _currTime += time;
+            _currAllTime += time;
             if (_currTime > 1)
             {
                 _currTime -= 1;
-                long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
-                _harm);
+                long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(
+                    CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                    _harm);
                 if (loopGroupBasic != null)
                 {
-                    loopGroupBasic.CloseLoopFx();
+                    loopGroupBasic.BreakTimeLine();
                 }
 
                 // for (int i = 0; i < _currTrigger.Count; i++)
@@ -82,12 +100,18 @@ namespace GameLogic.Combat.Skill
                 // ILifetCycleHitPoint[] allHero = new ILifetCycleHitPoint[_enterAlertTarget.Count];
                 for (int i = 0; i < _enterAlertTarget.Count; i++)
                 {
-                    ILifetCycleHitPoint targetEntity=  _enterAlertTarget[i].GetMainHotPoin<ILifetCycleHitPoint>();
+                    ILifetCycleHitPoint targetEntity = _enterAlertTarget[i].GetMainHotPoin<ILifetCycleHitPoint>();
                     _currTrigger.Add(targetEntity);
-                    HarmReturnInfo harmReturnInfo = Harm(CombatHeroEntity, targetEntity as CombatHeroHitPoint, 
+                    HarmReturnInfo harmReturnInfo = Harm(CombatHeroEntity, targetEntity as CombatHeroHitPoint,
                         v, AttType.Skill, triggerData);
                 }
-                loopGroupBasic=  ActivationTimeLineData("sk1_hit",_currTrigger);
+
+                loopGroupBasic = ActivationTimeLineData("sk1_hit", _currTrigger);
+            }
+
+            if (_currAllTime > _maxTime)
+            {
+                SkillPlayFinish();
             }
         }
         // protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,

+ 2 - 1
Assets/Scripts/GameLogic/Combat/Skill/SkillBasic.cs

@@ -156,7 +156,7 @@ namespace GameLogic.Combat.Skill
 
         public void InitSkillConfig(SkillConfig skillConfig)
         {
-            SkillMaxCd = 1;
+            SkillMaxCd = skillConfig.cd;
             _skillCd = SkillMaxCd;
             SelfSkillConfig = skillConfig;
 
@@ -354,6 +354,7 @@ namespace GameLogic.Combat.Skill
             for (int i = 0; i < currUseAllTimeLineLogic.Count; i++)
             {
                 currUseAllTimeLineLogic[i].BreakTimeLine();
+                _combatHeroEntity.combatHeroTimeLineControl.RemoveEventLogicGroup(currUseAllTimeLineLogic[i]);
             }
 
             currUseAllTimeLineLogic.Clear();

+ 8 - 0
Assets/Scripts/GameLogic/Paritcle/CombatParticleSystemPool.cs

@@ -18,6 +18,7 @@ namespace Fort23.Common
     /// </summary>
     public class CombatParticleSystemPool : ParticleSystemPool
     {
+        public CombatHeroEntity HeroEntity;
         public float UpdateTime;
         public int guid;
         public SpecialDotInfo targetSpecialDotInfo;
@@ -67,6 +68,13 @@ namespace Fort23.Common
         public override void DormancyObj()
         {
             CombatController.currActiveCombat.GameTimeLineParticleFactory.RemoveCombatParticleSystemPool(this);
+            if (HeroEntity != null)
+            {
+                HeroEntity.heroLoopParticle.Remove(this);
+            }
+
+            HeroEntity = null;
+
             base.DormancyObj();
         }
 

+ 23 - 21
Assets/Scripts/GameLogic/Paritcle/GameTimeLineParticleFactory.cs

@@ -60,6 +60,7 @@ public class GameTimeLineParticleFactory : ITimeLineParticleFactory
     {
         allFxAiLogicBasic.Clear();
     }
+
     public void RecycleFix()
     {
 #if !COMBAT_SERVER
@@ -89,10 +90,12 @@ public class GameTimeLineParticleFactory : ITimeLineParticleFactory
 #endif
         allCombatParticleSystem.Clear();
     }
+
     public void RemoveCombatParticleSystemPool(CombatParticleSystemPool combatParticleSystemPool)
     {
         allCombatParticleSystem.Remove(combatParticleSystemPool);
     }
+
     public Clock CreateParticle(TimeLineEventParticleLogicBasic timeLineEventParticleLogicBasic,
         ILifetCycleHitPoint effectTarget,
         ILifetCycleHitPoint fxTarget, Vector3 startPos, SpecialDotInfo targetSpecialDotInfo,
@@ -107,22 +110,16 @@ public class GameTimeLineParticleFactory : ITimeLineParticleFactory
                 pool.InitCombatParticleSystem();
 #endif
 
-
+                CombatHeroEntity combatHeroEntity = null;
                 if (targetSpecialDotInfo != null)
                 {
-#if !COMBAT_SERVER
-                    // CombatHeroEntity heroEntity = targetSpecialDotInfo.heroEntity as CombatHeroEntity;
-                    // if (heroEntity.CombatHeroTransform.iGObjectPoolInterface == null)
-                    // {
-                    //     return;
-                    // }
-#endif
+                    combatHeroEntity = targetSpecialDotInfo.heroEntity as CombatHeroEntity;
 
                     // if (!timeLineEventParticleLogicBasic.timeLinePlayFxSerializtion.isActivityCustomTargetPos)
                     // {
                     //     startPos = targetSpecialDotInfo.GetWorlPos();
                     // }
-#if !COMBAT_SERVER
+
                     if (!timeLineEventParticleLogicBasic.timeLinePlayFxSerializtion.isNotRotate)
                     {
                         pool.transform.eulerAngles = targetSpecialDotInfo.GetEulerAngles();
@@ -142,27 +139,32 @@ public class GameTimeLineParticleFactory : ITimeLineParticleFactory
                     // {
                     //     pool.transform.SetParent(targetSpecialDotInfo.targetTran);
                     // }
-#endif
                 }
-                else
+
+                if (combatHeroEntity != null && timeLineEventParticleLogicBasic.timeLinePlayFxSerializtion.isLoop)
                 {
+                    combatHeroEntity.heroLoopParticle.Add(pool);
+                    pool.HeroEntity = combatHeroEntity;
                 }
-#if !COMBAT_SERVER
+
+
                 pool.gameObject.SetActive(false);
                 pool.transform.position = startPos;
                 if (timeLineEventParticleLogicBasic.timeLinePlayFxSerializtion.isFollowRootTarget &&
                     timeLineEventParticleLogicBasic.timeLinePlayFxSerializtion.locationType !=
                     FXLocationType.SceneZero)
                 {
-                  
-                    CombatHeroEntity combatHeroEntity= targetSpecialDotInfo.heroEntity as CombatHeroEntity;
-                    pool.transform.SetParent(combatHeroEntity.GetMainHotPoin<CombatHeroHitPoint>().GetSpecialDotInfo("").targetTran);
+                    if (combatHeroEntity != null)
+                    {
+                        pool.transform.SetParent(combatHeroEntity.GetMainHotPoin<CombatHeroHitPoint>()
+                            .GetSpecialDotInfo("").targetTran);
+                    }
+
                     pool.transform.localEulerAngles = Vector3.zero;
-                   
-                }else
-                if (timeLineEventParticleLogicBasic.timeLinePlayFxSerializtion.isFollowTarget &&
-                    timeLineEventParticleLogicBasic.timeLinePlayFxSerializtion.locationType !=
-                    FXLocationType.SceneZero)
+                }
+                else if (timeLineEventParticleLogicBasic.timeLinePlayFxSerializtion.isFollowTarget &&
+                         timeLineEventParticleLogicBasic.timeLinePlayFxSerializtion.locationType !=
+                         FXLocationType.SceneZero)
                 {
                     pool.transform.localEulerAngles = Vector3.zero;
                     pool.targetSpecialDotInfo = targetSpecialDotInfo;
@@ -172,7 +174,7 @@ public class GameTimeLineParticleFactory : ITimeLineParticleFactory
                     // pool.transform.SetParent(null);
                     pool.targetSpecialDotInfo = null;
                 }
-#endif
+
                 FxAILogicBasic fxAILogicBasic = pool.own.GetComponent<FxAILogicBasic>();
 
                 if (fxAILogicBasic != null)

+ 16 - 0
Assets/Scripts/GameTimeLine/CustomizeTimeLogic/FxLogic/TimeLineEventLogic/TimeLineAlertLogic.cs

@@ -48,6 +48,9 @@ namespace UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic
                 _timeLineTriggerEntity as ITimeLineAlertTargetEnter;
             if (timeLineAlertTarget != null)
             {
+                ExitEventGameObject exitEventGameObject= collider.gameObject.GetOrAddComponent<ExitEventGameObject>();
+                exitEventGameObject.Collider = collider;
+                exitEventGameObject.OnCollisionExitEvent=(OnTriggerExitEvent);
                 timeLineAlertTarget.Enter(timeLineAlertSeriailztion, collider,_gameObject);
             }
         }
@@ -58,8 +61,17 @@ namespace UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic
                 mTimeLineAssetSerialization as TimeLineAlertSeriailztion;
             ITimeLineAlertTargetEnter timeLineAlertTarget =
                 _timeLineTriggerEntity as ITimeLineAlertTargetEnter;
+            
             if (timeLineAlertTarget != null)
             {
+                ExitEventGameObject exitEventGameObject= collider.gameObject.GetOrAddComponent<ExitEventGameObject>();
+                if (exitEventGameObject.OnCollisionExitEvent == null)
+                {
+                    return;
+                }
+
+                exitEventGameObject.Collider = null;
+                exitEventGameObject.OnCollisionExitEvent = null;
                 timeLineAlertTarget.Leave(timeLineAlertSeriailztion, collider,_gameObject);
             }
         }
@@ -121,6 +133,10 @@ namespace UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic
 
         protected override void ProDispose()
         {
+            _enterRegister?.UnRegister();
+            _exitRegister?.UnRegister();
+            _enterRegister = null;
+            _exitRegister = null;
         }
     }
 }

+ 5 - 3
Assets/Scripts/GameTimeLine/CustomizeTimeLogic/FxLogic/TimeLineEventLogic/TimeLineEventParticleLogicBasic.cs

@@ -85,12 +85,10 @@ namespace UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic
             CombatTimerManager.Instance.RemoveTimer(_combatTimer);
             _combatTimer = null;
             loadTask.Clear();
-            loopFx.Clear();
             if (currTarget != null)
             {
                 currTarget.Dispose();
             }
-
             currTarget = null;
         }
 
@@ -203,7 +201,11 @@ namespace UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic
                         ParticleSystemPool pool = systemPool as ParticleSystemPool;
                         if (pool != null)
                         {
-
+                            if (IsDis)
+                            {
+                                GObjectPool.Instance.Recycle(pool);
+                                return;
+                            }
 
                             if (timeLinePlayFxSerializtion.isLoop)
                             {

+ 13 - 6
Assets/Scripts/GameTimeLine/CustomizeTimeLogic/FxLogic/TimeLineEventLogicBasic.cs

@@ -23,7 +23,7 @@ public abstract class TimeLineEventLogicBasic : IDisposable
     protected bool IsEnter;
 
     protected bool IsLeave;
-
+    protected bool IsDis;
     public ILifeCycle castEntity
     {
         get { return _castEntity; }
@@ -153,6 +153,12 @@ public abstract class TimeLineEventLogicBasic : IDisposable
 
     public void Dispose()
     {
+        if (IsDis)
+        {
+            return;
+        }
+
+        IsDis = true;
         if (!IsLeave && IsEnter)
         {
             IsLeave = true;
@@ -160,6 +166,11 @@ public abstract class TimeLineEventLogicBasic : IDisposable
         }
 
         ProDispose();
+        this._timeLineTriggerEntity = null;
+        this._castEntity = null;
+        this.currTarget = null;
+        this._extraData = default;
+        this._customizePos = null;
     }
 
 
@@ -229,10 +240,6 @@ public abstract class TimeLineEventLogicBasic : IDisposable
 
     protected virtual void ProDispose()
     {
-        this._timeLineTriggerEntity = null;
-        this._castEntity = null;
-        this.currTarget = null;
-        this._extraData = default;
-        this._customizePos = null;
+      
     }
 }

+ 17 - 0
Assets/Scripts/GameTimeLine/CustomizeTimeLogic/FxLogic/TimeLineEventLogicGroupBasic.cs

@@ -258,6 +258,23 @@ namespace CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic
             }
         }
 
+        public void UpdateEndFinish()
+        {
+            for (int i = 0; i < timeLineLogic.Count; i++)
+            {
+                TimeLineEventParticleLogicBasic timeLineEventParticleLogicBasic =
+                    timeLineLogic[i] as TimeLineEventParticleLogicBasic;
+                if (timeLineEventParticleLogicBasic != null && timeLineEventParticleLogicBasic.loopFx.Count > 0)
+                {
+                    continue;
+                }
+
+                timeLineLogic[i].Dispose();
+                timeLineLogic.RemoveAt(i);
+                i--;
+            }
+        }
+
         public void Dispose()
         {
             _AssociationGroupBasics.Clear();

文件差異過大導致無法顯示
+ 0 - 0
Assets/StreamingAssets/assetConfig.txt


二進制
Excel2Json/Excel/skill.xlsx


+ 1 - 0
Fort23.Core.csproj

@@ -157,6 +157,7 @@
     <Compile Include="Assets\Scripts\Core\UI\UTool\CTween\CustomTweener.cs" />
     <Compile Include="Assets\Scripts\Core\Triiger\OnTriggerExitEventTrigger.cs" />
     <Compile Include="Assets\Scripts\Core\Pool\CObject\UnOrderMultiMapSet.cs" />
+    <Compile Include="Assets\Scripts\Core\Triiger\ExitEventGameObject.cs" />
     <Compile Include="Assets\Scripts\Core\Attribute\EnumLabel\EnumLabelAttribute.cs" />
     <Compile Include="Assets\Scripts\Core\Triiger\OnTriggerStay2DEventTrigger.cs" />
     <Compile Include="Assets\Scripts\Core\kcp\KCPTool\TCPServer.cs" />

文件差異過大導致無法顯示
+ 0 - 0
Release/PC/1.1.1/Bundle/assetConfig.txt


文件差異過大導致無法顯示
+ 439 - 355
UserSettings/Layouts/default-2022.dwlt


+ 4 - 4
XY001.sln

@@ -63,6 +63,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.AI.Navigation.Editor.
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coffee.SoftMaskForUGUI.Editor", "Coffee.SoftMaskForUGUI.Editor.csproj", "{cd1af635-37eb-1cc6-6459-3ed9c8f144e1}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{eed19863-2a24-2fa2-5144-e0e369763bd5}"
+EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeStage.AFPSCounter.Editor", "CodeStage.AFPSCounter.Editor.csproj", "{b2cf76b8-ee1d-c452-8c93-3c88f47c785b}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StompyRobot.SRF.Editor", "StompyRobot.SRF.Editor.csproj", "{b43ac9ca-f04a-47d3-da3c-4a7cafc99b1a}"
@@ -71,8 +73,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DownloadSystem", "DownloadS
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeStage.AFPSCounter.Examples", "CodeStage.AFPSCounter.Examples.csproj", "{925cd110-e687-6929-ee3f-881f42ce5c7f}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{eed19863-2a24-2fa2-5144-e0e369763bd5}"
-EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -140,6 +140,8 @@ Global
 		{b529b4b9-c773-8eb4-ec3e-5f63e0e3334c}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{cd1af635-37eb-1cc6-6459-3ed9c8f144e1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{cd1af635-37eb-1cc6-6459-3ed9c8f144e1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{eed19863-2a24-2fa2-5144-e0e369763bd5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{eed19863-2a24-2fa2-5144-e0e369763bd5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{b2cf76b8-ee1d-c452-8c93-3c88f47c785b}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{b2cf76b8-ee1d-c452-8c93-3c88f47c785b}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{b43ac9ca-f04a-47d3-da3c-4a7cafc99b1a}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -148,8 +150,6 @@ Global
 		{bcbcbf0b-c587-3257-d934-4f5bafbff086}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{925cd110-e687-6929-ee3f-881f42ce5c7f}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{925cd110-e687-6929-ee3f-881f42ce5c7f}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{eed19863-2a24-2fa2-5144-e0e369763bd5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{eed19863-2a24-2fa2-5144-e0e369763bd5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

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