Unity3d UGUI序列帧动画

转载 2017年01月09日 14:54:51

这里主要针对Unity3D中2D图片动画进行帧动画播放。

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<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;
                    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();
    }
}

将上述代码加载到Image物体上,将需要播放的图片动画每一帧放到SpriteFrame数组中,就可以进行播放了。
添加图片截图

本文转载自http://www.cnblogs.com/mrblue/p/5191183.html
如有任何问题请及时联系本人。

写的一个UGUI下Image控件做序列帧动画的小工具

unity2D使用序列帧做动画,一般都用2d SpriteRenderer,它的好处是能够沿用图片原有的大小和锚点。特别是我们使用TexturePacker打图集的时候并且Trim边缘空白的时候,可以...
  • rcfalcon
  • rcfalcon
  • 2016年03月14日 21:24
  • 5526

unity帧动画的几种方式比较

之前一直没有做帧动画系列,以前的动画方式多是用程序控制,或者有些效果类型的会用shader实现。但后面要加各种特效动画,就必须熟悉帧动画了。 看了好多关于帧动画方面的思路,感觉方式还是很多的,但到底哪...
  • gl5773477
  • gl5773477
  • 2017年01月02日 16:57
  • 3282

UGUI逐帧动画

using System.Collections; using System.Collections.Generic; using UnityEngine.UI; public class UM...
  • laogao418
  • laogao418
  • 2016年02月25日 23:54
  • 627

Unity 序列帧动画

Unity 制作序列帧动画第一步:找一张序列帧贴图,在网上随便找了一个将图片拖拽到Unity项目中第二步:设置图片,选中图片在Inspector 面板打开精灵编辑器弹出如下窗口第三步: 编辑图片 点...
  • LIQIANGEASTSUN
  • LIQIANGEASTSUN
  • 2015年06月04日 10:25
  • 6890

Unity3D之简单的帧动画

算是第一篇非转载的文章了~ 在这里推荐个Unity3d很多功能效果的脚本集合的网站,也是部门老大发现给我的~ http://wiki.unity3d.com/index.php?t...
  • huang9012
  • huang9012
  • 2014年05月01日 22:52
  • 1477

【Unity3d】简单的UGUI序列帧播放

UGUI的Image配合Animation可以很方便的实现序列帧播放的功能。我们也能自己写一个播放脚本来控制序列帧的播放,这样就可以方便地在特定帧数插入一些事件。设计一个SpriteAnimatior...
  • dark00800
  • dark00800
  • 2017年09月25日 16:11
  • 379

UGUI代码驱动序列帧动画

using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI;...
  • tonye129
  • tonye129
  • 2017年05月28日 14:02
  • 262

Unity_UGUI(五)_动画系统

Unity暂时没有单独给UGUI提供动画系统,用官方的动画系统也能做只是比较麻烦,所以我们有很多选择了。 1.修改NGUI的UITweener在用UGUI上,轻量级动画系统。 2.使用第三方插件入iT...
  • heyuchang666
  • heyuchang666
  • 2016年03月07日 11:54
  • 2922

关于UGUI实现UI动画

问题描述: 我们在做游戏的时候,如果背包能动态的滑出,会有更好的体验。 实现物体的隐藏和显示,方法一可以用SetActice(true/false)的方式;方法二可以在物体需要隐藏的时候,放在可视范围...
  • linyujie0927
  • linyujie0927
  • 2017年09月04日 18:49
  • 523

Unity学习笔记11——UGUI动画插件DoTween

在项目开发中,我们通常都需要用到缓动动画系统,控制我们的目标对象从当前位置沿着特定曲线路径运动到指定的目标坐标点,在Unity 5.x中最常用的就是DoTween这个动画插件。         下面...
  • linshuhe1
  • linshuhe1
  • 2016年05月06日 15:06
  • 7115
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity3d UGUI序列帧动画
举报原因:
原因补充:

(最多只允许输入30个字)