zoukankan      html  css  js  c++  java
  • Unity3d UGUI序列帧动画

    代码

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

      

  • 相关阅读:
    在 Java SE 6 中监视和诊断性能问题
    Codeforces Round #491 (Div. 2)部分题解
    BZOJ1607: [Usaco2008 Dec]Patting Heads 轻拍牛头(模拟 调和级数)
    BZOj1261: [SCOI2006]zh_tree(dp)
    BZOJ1569: [JSOI2008]Blue Mary的职员分配(dp 暴力)
    BZOJ4300: 绝世好题(dp)
    树上莫队算法
    SPOJ COT2
    BZOJ1086: [SCOI2005]王室联邦(贪心,分块?)
    Educational Codeforces Round 42 (Rated for Div. 2)
  • 原文地址:https://www.cnblogs.com/mrblue/p/5191183.html
Copyright © 2011-2022 走看看