跳到主要内容

EasyAnim

重要 注意 提醒

Coding Style wiki


EasyAnim简易动画播放封装 (播放 + 结束回调) 的抽象基类,实现分为 EasyAnimation (Animation 旧版动画系统)EasyAnimator (Animator),通过统一的 Play(name, animEnd) 接口播放动画并于动画事件 AnimEnd 触发时执行结束回调。

命名空间OxGKit.Utilities.EasyAnim
类型public abstract class EasyAnim : MonoBehaviourpublic class EasyAnimation : EasyAnimpublic class EasyAnimator : EasyAnim
源码EasyAnim.csEasyAnimation.csEasyAnimator.cs
using OxGKit.Utilities.EasyAnim;

重要 必须在动画片段 (Clip) 上设置名为 AnimEnd 的动画事件 (Animation Event),动画播放至该事件时才会触发 animEnd 回调;未设置该事件时回调永远不会触发,这是“动画回调没有执行”时的首要检查点。

快速上手

using OxGKit.Utilities.EasyAnim;
using UnityEngine;

public class EasyAnimDemo : MonoBehaviour
{
private void Start()
{
// 获取 EasyAnim (EasyAnimation 或 EasyAnimator)
var easyAnim = this.GetComponent<EasyAnim>();

// EasyAnimation 传入 Clip 名称; EasyAnimator 传入 Trigger 参数名称
easyAnim.Play("Open", () =>
{
Debug.Log("Animation End");
});

// 检查是否有该动画
bool hasAnim = easyAnim.HasAnim("Open");
}
}

通用规则

AnimEnd 动画事件

  1. Animation 窗口选择动画片段 (Clip)。
  2. 在结尾帧 (或希望触发回调的时间点) 新增 Animation Event
  3. Function 名称填入 AnimEnd (对应 EasyAnim 基类的 protected virtual void AnimEnd() 事件函数)。

Fail-Open 行为

  • Play 时若找不到指定的 Clip 名称 (EasyAnimation) 或参数名称 (EasyAnimator),会直接调用 AnimEnd 立即触发回调 (不会卡住流程)。

提醒 每次 Play覆盖上一次设置的结束回调;回调触发后即清空 (单次触发)。


EasyAnim (基类)

方法总览

方法说明
Play(抽象) 播放动画并设置结束回调。
HasAnim(抽象) 检查是否有指定动画。

Play

public abstract void Play(string name, Action animEnd)

播放指定名称的动画,并设置结束回调 (由动画事件 AnimEnd 触发)。

HasAnim

public abstract bool HasAnim(string name)

检查是否有指定名称的动画。


EasyAnimation

适用于 Animation (旧版动画系统),通过 AddComponentMenu: OxGKit/Utilities/EasyAnim/EasyAnimation 加入;Inspector 可指定 Animation 组件,未指定时于 Awake 自动 GetComponent

GetAnimation

public Animation GetAnimation()

获取绑定的 Animation 组件。

Play (EasyAnimation)

public override void Play(string animName, Action animEnd)

Clip 名称播放动画 (Animation.Play);找不到该 Clip 时直接触发回调

HasAnim (EasyAnimation)

public override bool HasAnim(string animName)

检查 Animation 中是否含有指定名称的 Clip (GetClip)。


EasyAnimator

适用于 Animator,通过 AddComponentMenu: OxGKit/Utilities/EasyAnim/EasyAnimator 加入;Inspector 可指定 Animator 组件,未指定时于 Awake 自动 GetComponent

GetAnimation (EasyAnimator)

public Animator GetAnimation()

获取绑定的 Animator 组件 (方法名称为 GetAnimation返回类型为 Animator)。

Play (EasyAnimator)

public override void Play(string paramName, Action animEnd)

Trigger 参数名称播放动画 (先 ResetTriggerSetTrigger);找不到该参数时直接触发回调

注意 paramName 必须是 Animator Controller 中的 Trigger 参数名称 (而非 State 或 Clip 名称)。

HasAnim (EasyAnimator)

public override bool HasAnim(string paramName)

检查 Animator 的参数列表中是否含有指定名称的参数 (内部有参数缓存优化,Controller 变更时自动重新缓存)。