跳至主要内容

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 變更時自動重新快取)。