diff options
author | chai <chaifix@163.com> | 2022-06-23 08:56:29 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2022-06-23 08:56:29 +0800 |
commit | 64482ae0fb8cb756469b98620e8fbd166f5f5de0 (patch) | |
tree | b09724a2a48b27d28d341f2f612a55cd576212bc /Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs | |
parent | 10d011d06c8838c91435615b577f36cc893c2f9a (diff) |
* animation
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs')
-rw-r--r-- | Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs | 29 |
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();
|