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 動畫事件
- 於 Animation 視窗選擇動畫片段 (Clip)。
- 在結尾幀 (或希望觸發回呼的時間點) 新增 Animation Event。
- 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 變更時自動重新快取)。