跳到主要内容

TextureAnim

重要 注意 提醒

Coding Style wiki


TextureAnimation 是以 CPU 计算 (CPU computation)图片序列动画 (Image Sequence Animation) 组件,于 Inspector 配置 Sprite 序列与播放参数即可播放,支持 SpriteRenderer 与 Image,具有 Normal、Reverse、PingPong、PingPongReverse 播放模式,并支持编辑模式预览 (ExecuteInEditMode)

命名空间OxGKit.Utilities.TextureAnim
类型public class TextureAnimation : MonoBehaviour
源码TextureAnimation.cs
using OxGKit.Utilities.TextureAnim;

注意 组件需挂载于含有 SpriteRendererImage 的对象上 (于 Awake 自动检测,SpriteRenderer 优先),通过 AddComponentMenu: OxGKit/Utilities/TextureAnim/TextureAnimation 加入。

快速上手

using OxGKit.Utilities.TextureAnim;
using UnityEngine;

public class TextureAnimDemo : MonoBehaviour
{
public TextureAnimation texAnim;

private void Start()
{
// 设置帧率
this.texAnim.SetFrameRate(12);

// 设置动画结束回调 (非循环播放完成时触发)
this.texAnim.SetAnimationEnd(() =>
{
Debug.Log("Animation Complete");
});
}

public void Replay()
{
// 重置动画从头播放
this.texAnim.ResetAnim();
}
}

通用规则

Inspector 配置

字段说明
Sprites图片序列 (List of Sprite),依序作为动画帧。
Is Loop是否循环播放 (默认 false)。
Play Mode播放模式:Normal (正序)、Reverse (倒序)、PingPong (正序往返)、PingPongReverse (倒序往返)。
Frame Rate播放帧率 (默认 30)。
Ignore Time Scale是否忽略 Time.timeScale (默认 true,使用 unscaledDeltaTime)。

播放行为

  • 动画由 Update 驱动,依 Frame Rate 换算帧时间切换 Sprite。
  • 非循环 (Is Loop = false) 播放完成时,会停在结尾帧并触发 SetAnimationEnd 设置的回调;PingPong / PingPongReverse 需完成一次往返 (两趟) 才视为播放完成。
  • 组件 OnDisable 与 Inspector 数值变更 (Editor) 时会自动 ResetAnim

提醒 编辑模式下即可预览动画效果 (ExecuteInEditMode),无需进入 Play Mode。


方法总览

方法说明
IsAnimationComplete检查动画是否已播放完成。
SetAnimationEnd设置动画结束回调。
SetIgnoreScale设置是否忽略 TimeScale。
SetFrameRate设置播放帧率。
ResetAnim重置动画至初始状态。

IsAnimationComplete

public bool IsAnimationComplete()

检查动画是否已播放完成 (仅非循环播放会进入完成状态)。

SetAnimationEnd

public void SetAnimationEnd(Action endCallback)

设置动画结束回调,于非循环播放完成时触发。

texAnim.SetAnimationEnd(() => Debug.Log("Done"));

SetIgnoreScale

public void SetIgnoreScale(bool ignore)

设置是否忽略 Time.timeScale (true 使用 unscaledDeltaTimefalse 使用 deltaTime)。

SetFrameRate

public void SetFrameRate(int frameRate)

设置播放帧率 (最小值为 0;帧率为 0 时动画不会更新)。

ResetAnim

public void ResetAnim()

重置动画至初始状态 (时间、帧索引、完成状态、往返计数),并立即显示起始帧。