[置顶] Unity中基于NGUI插件制作序列帧动画

我们不仅可以用unity开发3D游戏,还可以开发2D类游戏,在2D游戏中动画的制作是必不可少的一个内容,我们知道在unity可以用Animation来制作游戏的动画,但是那样拖拽感觉效率不高,出错的几率很大,所以我们通过代码来实现其功能。

    1:我们首先将需要制作动画的素材导入到项目工程中,为了避免混乱,将一个动画的素材放在一个文件夹下,并将这些图片的格式改为

     

    2:序列帧动画的原理就是快速的变换动画帧,类似于动画原理,以肉眼难以分辨的情况下依次变化图片,人眼视觉残留是0.1s,所以我们只要将素材每秒更换10次(1/0.1)以上就制作成动画了。

    3:序列帧动画有2中情况,一种是素材是分离开的,也就是一张图片就是一个素材,另一种是所有素材都在一张图片上面,我们要通过代码来就切割显示,在这一篇中我先说第一种情况

    public class AnimationController : MonoBehaviour {


    /// <summary>
    /// 动画的控制
    /// </summary>
    public SpriteRenderer upRenderer;//需要更换图片物体的渲染器
    public Sprite[] upIdleSpriteArray;//渲染图片的数组
    private int idleUpIndex = 0;//渲染序号
    private int idleUpLength = 0;//在代码中获取数组的长度
    private float idleUpTimer = 0;//计时器
    private float aniTimeInternal=0.1f;//时间间隔,就是多久换一次图片

    void Start () {
        idleUpLength = upIdleSpriteArray.Length;
    }

// Update is called once per frame
void Update () {
                idleUpTimer += Time.deltaTime;
                if(idleUpTimer>aniTimeInternal)
                {
                    idleUpTimer -= aniTimeInternal;
                    idleUpIndex++;
                    idleUpIndex %= upIdleSpriteArray.Length;
                    upRenderer.sprite = upIdleSpriteArray[idleUpIndex];
                }
      
}
}

当然在这里我们也可以将素材放在Resources文件夹下,我们用Resources.AllLoad();方法将所有素材加载进来,注意的是:我们在对素材命名的时候要有顺序,然后加载进来要进行一下排序再进行播放。

    好了,下一次我在说第二种序列帧动画的控制,感谢大家!


你可能感兴趣的:(动画,unity,NGUI,2d,序列帧)