跳至主要内容

EasyAnim

重要 注意 提醒

Coding Style wiki​


EasyAnim 為簡易動畫播放封裝 (播放 + 結束回呼) 的抽象基底類,實作分為 EasyAnimation (Animation 舊版動畫系統) 與 EasyAnimator (Animator),透過統一的 Play(name, animEnd) 介面播放動畫並於動畫事件 AnimEnd 觸發時執行結束回呼。

命名空間OxGKit.Utilities.EasyAnim
類型public abstract class EasyAnim : MonoBehaviour、public class EasyAnimation : EasyAnim、public class EasyAnimator : EasyAnim
原始碼EasyAnim.cs、EasyAnimation.cs、EasyAnimator.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 參數名稱播放動畫 (先 ResetTrigger 再 SetTrigger);找不到該參數時直接觸發回呼。

注意 paramName 必須是 Animator Controller 中的 Trigger 參數名稱 (而非 State 或 Clip 名稱)。

HasAnim (EasyAnimator)​

public override bool HasAnim(string paramName)

檢查 Animator 的參數列表中是否含有指定名稱的參數 (內部有參數快取優化,Controller 變更時自動重新快取)。