在Unity中有些应用场景的动画是通过序列帧实现的。
如下图即为一个英雄攻击的一个动画:
那么如何实现该序列帧动画的播放呢,我们可以通过代码来控制播放。
1、把以上序列帧导入编辑器中,并修改图片属性,如下图所示,其中,Texture Type修改为Sprite(2D and UI),Sprite Mode修改为Single模式,然后点击Apply应用。
2、创建一个Image组件,并把序列帧第一帧赋予Image的Source Image,如下图所示:
3、编写控制脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SpriteAnimation : MonoBehaviour
{
public Sprite[] sprites; // 存储序列帧动画的所有帧
public float framesPerSecond = 10.0f; // 每秒播放的帧数
public Image image;
// Start is called before the first frame update
void Start()
{
StartCoroutine(PlayAnimation());
}
// Update is called once per frame
void Update()
{
}
IEnumerator PlayAnimation()
{
while (true)
{
for (int i = 0; i < sprites.Length; i++)
{
image.sprite = sprites[i];
yield return new WaitForSeconds(1f / framesPerSecond);
}
}
}
}
4、把控制脚本放置场景中,并把序列帧所有图片拉到sprites数组里面,把Image拉到image变量中,如图所示:
5、完毕,运行。
Unity 代码控制播放序列帧动画的实现