美文网首页
Unity 播放序列帧动画

Unity 播放序列帧动画

作者: lonecolonel | 来源:发表于2017-12-04 10:08 被阅读0次

    使用方法只需要将脚本挂载UI上,将图片拖拽到数组里即可.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class StartAnimation : MonoBehaviour {
    
        private Image ImageSource;
        private int mCurFrame = 0;
        private float mDelta = 0;
    
        public float FPS = 15;
        public List<Sprite> 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()
        {
            ImageSource = GetComponent<Image>();
        }
     void Start()
        {
            
    
            if (AutoPlay)
            {
                Play();
            }
            else
            {
                IsPlaying = false;
            }
        }
    
        private void SetSprite(int idx)
        {
            ImageSource.sprite = SpriteFrames[idx];
            //该部分为设置成原始图片大小,如果只需要显示Image设定好的图片大小,注释掉该行即可。
            //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;
                        Debug.Log("开启登录");
                        StartScript.instance.OnStart();
                        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();
        }
    }
    

    相关文章

      网友评论

          本文标题:Unity 播放序列帧动画

          本文链接:https://www.haomeiwen.com/subject/gmptixtx.html