summaryrefslogtreecommitdiff
path: root/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-06-23 08:56:29 +0800
committerchai <chaifix@163.com>2022-06-23 08:56:29 +0800
commit64482ae0fb8cb756469b98620e8fbd166f5f5de0 (patch)
treeb09724a2a48b27d28d341f2f612a55cd576212bc /Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
parent10d011d06c8838c91435615b577f36cc893c2f9a (diff)
* animation
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs')
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs29
1 files changed, 24 insertions, 5 deletions
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
index ac416acb..45276edc 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
@@ -19,7 +19,20 @@ public class UnitAnimation : UnitComponent
// 当前动作,和AnimatorState不同,忽略过渡,即时切换
protected string m_CurrentAction = "Idle";
- public string currentAction { get { return m_CurrentAction; } }
+ public string currentAction
+ {
+ get
+ {
+ return m_CurrentAction;
+ }
+ set
+ {
+ m_CurrentAction = value;
+ m_Dirty = true;
+ }
+ }
+
+ private bool m_Dirty = true;
public Animator animator { get { return m_Animator; } }
protected Animator m_Animator;
@@ -33,11 +46,17 @@ public class UnitAnimation : UnitComponent
}
// 当前动作的AnimationData
+ private AnimationData m_CachedAnimationData;
public AnimationData animationData
{
get
{
- return m_ActionData.GetAnimationData(currentAction);
+ if (m_Dirty)
+ {
+ m_CachedAnimationData = m_ActionData.GetAnimationData(currentAction);
+ m_Dirty = false;
+ }
+ return m_CachedAnimationData;
}
}
@@ -151,7 +170,7 @@ public class UnitAnimation : UnitComponent
/// <param name="normalizedTime"></param>
public void Play(string targetAction, float normalizedTime = float.NegativeInfinity)
{
- m_CurrentAction = targetAction;
+ currentAction = targetAction;
m_Animator.Play(targetAction, 0, normalizedTime);
m_TimelineEventProxy.ResetPrevAnimationData();
@@ -173,7 +192,7 @@ public class UnitAnimation : UnitComponent
/// <param name="normalizedTransitionTime"></param>
public void CrossFade(string targetAction, float normalizedTransitionDuration, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f)
{
- TransitionData transition = m_ActionData.GetTransitionData(m_CurrentAction, targetAction);
+ TransitionData transition = m_ActionData.GetTransitionData(currentAction, targetAction);
if(transition != null)
{
if(transition.type == TransitionData.TransitionType.NormalizedTime)
@@ -189,7 +208,7 @@ public class UnitAnimation : UnitComponent
{
m_Animator.CrossFade(targetAction, normalizedTransitionDuration, 0, normalizedTimeOffset, normalizedTransitionTime);
}
- m_CurrentAction = targetAction;
+ currentAction = targetAction;
m_TimelineEventProxy.ResetPrevAnimationData();