Unity3d 5.3.4 UGUI Image 实现序列帧动画

一直没有写博客,最近项目要求添加序列帧动画,之前一直用NGUI,只做起来非常方便。刚接触UGU几天的时间,所以写的简单些,在此做一下记录,以后防止遗忘。

首先,贴上代码(不是我写的):

using UnityEngine;

using System.Collections;

using System.Collections.Generic;

using UnityEngine.UI;

using System;


[RequireComponent(typeof(Image))]

public class UGUISpriteAnimation : MonoBehaviour

{

    private Image ImageSource;

    private int mCurFrame = 0;

    private float mDelta = 0;


    public float FPS = 5;

    public List SpriteFrames;

    public bool IsPlaying = false;

    public bool Foward = true;

    public bool AutoPlay = false;

    public bool Loop = false;


    public int FrameCount

    {

        get

        {

            return SpriteFrames.Count;

        }

    }


    void Awake()

    {

    }


    void Start()

    {

        if (AutoPlay)

        {

            Play();

        }

        else

        {

            IsPlaying = false;

        }

    }


    private void SetSprite(int idx)

    {

        ImageSource.sprite = SpriteFrames[idx];

        ImageSource.SetNativeSize();

    }


    public void Play()

    {

        IsPlaying = true;

        Foward = true;

    }


    public void PlayReverse()

    {

        IsPlaying = true;

        Foward = false;

    }


    void Update()

    {

        if (!IsPlaying || 0 == FrameCount)

        {

            return;

        }


        mDelta += Time.deltaTime;

        if (mDelta > 1 / FPS)

        {

            mDelta = 0;

            if(Foward)

            {

                mCurFrame++;

            }

            else

            {

                mCurFrame--;

            }


            if (mCurFrame >= FrameCount)

            {

                if (Loop)

                {

                    mCurFrame = 0;

                }

                else

                {

                    IsPlaying = false;

                    return;

                }

            }

            else if (mCurFrame<0)

            {

                if (Loop)

                {

                    mCurFrame = FrameCount-1;

                }

                else

                {

                    IsPlaying = false;

                    return;

                }          

            }


            SetSprite(mCurFrame);

        }

    }


    public void Pause()

    {

        IsPlaying = false;

    }


    public void Resume()

    {

        if (!IsPlaying)

        {

            IsPlaying = true;

        }

    }


    public void Stop()

    {

        mCurFrame = 0;

        SetSprite(mCurFrame);

        IsPlaying = false;

    }


    public void Rewind()

    {

        mCurFrame = 0;

        SetSprite(mCurFrame);

        Play();

    }

}

在学习u3d的过程中,或者说在学习任何一门技术的时候,想要快速掌握,最重要的方法就是实践。之前做东西,遇到困难的地方总是想着避开,现在却不这么想,因为任何技术都不会难倒你,难倒了你的永远是自己的恐惧。所以建议大家在学习新技术的时候,不要想很多,拿到源码先搞几遍,不停的实践,几遍之后,你会发现也就这么回事。

我的文章里记录的大部分是vr,游戏相关的知识,大家可以看看,有任何不正确的地方,还望大家指正。

你可能感兴趣的:(Unity3d 5.3.4 UGUI Image 实现序列帧动画)