diff options
Diffstat (limited to 'Assets/Scripts/AbilitySystem')
25 files changed, 213 insertions, 98 deletions
diff --git a/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs index 435edb93..4b9cd21e 100644 --- a/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs +++ b/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs @@ -13,7 +13,7 @@ public class IdleAbility : AbilityBase /// <summary>
/// 在Idle状态时可以切换的ability
/// </summary>
- private List<AbilityTrigger> m_AbilityTriggers;
+ private List<Trigger> m_Triggers;
public IdleAbility(int animation)
: base()
@@ -33,7 +33,7 @@ public class IdleAbility : AbilityBase public override void OnUpdate()
{
- foreach(var trigger in m_AbilityTriggers)
+ foreach(var trigger in m_Triggers)
{
if (trigger.Update())
break;
diff --git a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs index a2057900..2c39afd5 100644 --- a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs +++ b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs @@ -8,7 +8,7 @@ public class MoveAbility : AbilityBase /// <summary>
/// 在跑动状态时可以切换的ability
/// </summary>
- private List<AbilityTrigger> m_AbilityTriggers;
+ private List<Trigger> m_Triggers;
public override void OnInit()
{
@@ -45,7 +45,7 @@ public class MoveAbility : AbilityBase public override void OnUpdate()
{
- foreach (var abilityTrigger in m_AbilityTriggers)
+ foreach (var abilityTrigger in m_Triggers)
{
if (abilityTrigger.Update())
break;
diff --git a/Assets/Scripts/AbilitySystem/AbilitySystem.cs b/Assets/Scripts/AbilitySystem/AbilitySystem.cs index ce4ff49e..890c1b4b 100644 --- a/Assets/Scripts/AbilitySystem/AbilitySystem.cs +++ b/Assets/Scripts/AbilitySystem/AbilitySystem.cs @@ -26,7 +26,12 @@ public class AbilitySystem { if (ability == null) return; + + if (m_Currrent != null) + m_Currrent.OnExit(); + ability.OnEnter(); + m_Currrent = ability; } public void AddAbility(AbilityBase ability) diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs b/Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs new file mode 100644 index 00000000..6f2252d7 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ActionAnimCrossFade : ActionBase +{ + Animator m_Animator; + int m_TargetAnimation; + float m_Duration; + + public ActionAnimCrossFade(Animator animator, int toAnim, float duration = 0) + { + m_Animator = animator; + m_TargetAnimation = toAnim; + m_Duration = duration; + } + + public override void Execute() + { + m_Animator.CrossFade(m_TargetAnimation, m_Duration); + } + +}
\ No newline at end of file diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionCrossFade.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs.meta index 6eed1575..6eed1575 100644 --- a/Assets/Scripts/AbilitySystem/Actions/ActionCrossFade.cs.meta +++ b/Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs.meta diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionBase.cs b/Assets/Scripts/AbilitySystem/Actions/ActionBase.cs index f3d67fff..1458e340 100644 --- a/Assets/Scripts/AbilitySystem/Actions/ActionBase.cs +++ b/Assets/Scripts/AbilitySystem/Actions/ActionBase.cs @@ -2,17 +2,22 @@ using System.Collections.Generic; using UnityEngine; -public class ActionBase : MonoBehaviour +public abstract class ActionBase { - // Start is called before the first frame update - void Start() - { - - } + private int m_ID; + public int ID + { + get + { + return m_ID; + } + } + + protected ActionBase() + { + m_ID = UIDManager.Acquire(); + } + + public abstract void Execute(); - // Update is called once per frame - void Update() - { - - } } diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs b/Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs new file mode 100644 index 00000000..c411c3fa --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// <summary> +/// 创建角色残影 +/// </summary> +public class ActionFlashEffect : ActionBase +{ + public override void Execute() + { + + } +} diff --git a/Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs.meta index 826e50cf..ea99c96b 100644 --- a/Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs.meta +++ b/Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e69d951b4141e5646984e501aae2cbff +guid: 9a193a2045f759e4abaff6bfef12658f MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionFreze.cs b/Assets/Scripts/AbilitySystem/Actions/ActionFreeze.cs index 7f26f35a..7f26f35a 100644 --- a/Assets/Scripts/AbilitySystem/Actions/ActionFreze.cs +++ b/Assets/Scripts/AbilitySystem/Actions/ActionFreeze.cs diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionFreze.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionFreeze.cs.meta index eb9fe77a..eb9fe77a 100644 --- a/Assets/Scripts/AbilitySystem/Actions/ActionFreze.cs.meta +++ b/Assets/Scripts/AbilitySystem/Actions/ActionFreeze.cs.meta diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionPlaySfx.cs b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySfx.cs index 73319e9e..442ce999 100644 --- a/Assets/Scripts/AbilitySystem/Actions/ActionPlaySfx.cs +++ b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySfx.cs @@ -2,17 +2,18 @@ using System.Collections.Generic; using UnityEngine; -public class ActionPlaySfx : MonoBehaviour +public class ActionPlaySfx : ActionBase { - // Start is called before the first frame update - void Start() - { - - } + GameObject m_Sfx; + Vector3 m_TargetPos; - // Update is called once per frame - void Update() - { - - } -} + public ActionPlaySfx(GameObject sfx, Vector3 position) + { + m_Sfx = sfx; + m_TargetPos = position; + } + + public override void Execute() + { + } +}
\ No newline at end of file diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionCrossFade.cs b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs index 57b1bd2b..237b7455 100644 --- a/Assets/Scripts/AbilitySystem/Actions/ActionCrossFade.cs +++ b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using UnityEngine; -public class ActionCrossFade : MonoBehaviour +public class ActionPlaySound : MonoBehaviour { // Start is called before the first frame update void Start() diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs.meta new file mode 100644 index 00000000..a9bbf014 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c43194c5e437d5d4fb02a7b0618a7b0e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs new file mode 100644 index 00000000..282ef929 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ConditionAnimFrameRange : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs.meta new file mode 100644 index 00000000..3fc88fb1 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28e7aa2c7b5a9d74b936ec5731eeec36 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs index c047b50c..80bae491 100644 --- a/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs @@ -5,7 +5,7 @@ using UnityEngine; /// <summary>
/// 某个角色是否浮空
/// </summary>
-public class ConditionInair : ConditionBase
+public class ConditionInAir : ConditionBase
{
public override bool Evaluate()
{
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs new file mode 100644 index 00000000..8db94951 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ConditionNotHit : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs.meta new file mode 100644 index 00000000..7058713f --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0d86b3d8867b144f90fcedf4a6351c3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs new file mode 100644 index 00000000..9604677a --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ConditionNotHurt : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs.meta new file mode 100644 index 00000000..bbe77240 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ab089a23fff18a647856f2e33a145784 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Trigger.cs b/Assets/Scripts/AbilitySystem/Trigger.cs new file mode 100644 index 00000000..b7b4751c --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Trigger.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// <summary> +/// 不同效果的trigger继承这个基类 +/// </summary> + +public sealed class Trigger +{ + private ConditionBase m_Condition; + private List<ActionBase> m_ActionChain; + + public Trigger(ConditionBase condition, List<ActionBase> actions) + { + m_Condition = condition; + m_ActionChain.AddRange(actions); + } + + /// <summary> + /// 如果触发执行了,返回true,否则返回false + /// </summary> + /// <returns></returns> + public bool Update() + { + if (m_Condition.Evaluate()) + { + foreach(var action in m_ActionChain) + { + action.Execute(); + } + return true; + } + return false; + } + +}
\ No newline at end of file diff --git a/Assets/Scripts/AbilitySystem/Triggers/Trigger.cs.meta b/Assets/Scripts/AbilitySystem/Trigger.cs.meta index 91d7d1b8..91d7d1b8 100644 --- a/Assets/Scripts/AbilitySystem/Triggers/Trigger.cs.meta +++ b/Assets/Scripts/AbilitySystem/Trigger.cs.meta diff --git a/Assets/Scripts/AbilitySystem/Triggers.meta b/Assets/Scripts/AbilitySystem/Triggers.meta deleted file mode 100644 index e21c195a..00000000 --- a/Assets/Scripts/AbilitySystem/Triggers.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 12ea28314544c614e915aa9b791d8611 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs b/Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs deleted file mode 100644 index ab325866..00000000 --- a/Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-/// <summary>
-/// 在ability的某一帧切换到某个ability的trigger
-/// </summary>
-public class AbilityTrigger : Trigger
-{
- AbilityBase m_TargetAbility;
-
- public AbilityTrigger(ConditionBase condition, AbilityBase target)
- : base(condition)
- {
- m_TargetAbility = target;
- }
-
- public override bool Update()
- {
- // 如果满足条件,切换到下一个ability
- if (IsFulfilled())
- {
- return true;
- }
- return base.Update();
- }
-
-}
diff --git a/Assets/Scripts/AbilitySystem/Triggers/Trigger.cs b/Assets/Scripts/AbilitySystem/Triggers/Trigger.cs deleted file mode 100644 index 178932fd..00000000 --- a/Assets/Scripts/AbilitySystem/Triggers/Trigger.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-/// <summary>
-/// 不同效果的trigger基础这个基类
-/// </summary>
-
-public abstract class Trigger
-{
- protected ConditionBase m_Condition;
-
- public Trigger(ConditionBase condition)
- {
- m_Condition = condition;
- }
-
- protected bool IsFulfilled()
- {
- return m_Condition.Evaluate();
- }
-
- /// <summary>
- /// 如果触发执行了,返回true,否则返回false
- /// </summary>
- /// <returns></returns>
- public virtual bool Update()
- {
- return false;
- }
-
-}
|