UGUI序列帧动画

脚本挂在要序列帧的图片上


using  UnityEngine;
using  System.Collections;
using  System.Collections.Generic;
using  UnityEngine.UI;
 
public  class  UMovie : MonoBehaviour
{
     public  string  movieName;
     public  List<Sprite> lSprites;
     public  float  fSep = 0.05f;
 
     public  float  showerWidth
     {
         get
         {
             if  (shower ==  null )
             {
                 return  0;
             }
             return  shower.rectTransform.rect.width;
         }
     }
     public  float  showerHeight
     {
         get
         {
             if  (shower ==  null )
             {
                 return  0;
             }
             return  shower.rectTransform.rect.height;
         }
     }
 
     void  Awake()
     {
         shower = GetComponent<Image>();
 
         if  ( string .IsNullOrEmpty(movieName))
         {
             movieName =  "movieName" ;
         }
     }
     void  Start()
     {
         Play(curFrame);
     }
 
     public  void  Play( int  iFrame)
     {
         if  (iFrame >= FrameCount)
         {
             iFrame = 0;
         }
         shower.sprite = lSprites[iFrame];
         curFrame = iFrame;
         shower.SetNativeSize();
 
         if  (dMovieEvents.ContainsKey(iFrame))
         {
             foreach  (delegateMovieEvent del  in  dMovieEvents[iFrame])
             {
                 del();
             }
         }
     }
 
     private  Image shower;
 
     int  curFrame = 0;
     public  int  FrameCount
     {
         get
         {
             return  lSprites.Count;
         }
     }
 
     float  fDelta = 0;
     void  Update()
     {
         fDelta += Time.deltaTime;
         if  (fDelta > fSep)
         {
             fDelta = 0;
             curFrame++;
             Play(curFrame);
         }
     }
 
     public  delegate  void  delegateMovieEvent();
     private  Dictionary< int , List<delegateMovieEvent>> dMovieEvents =  new  Dictionary< int , List<delegateMovieEvent>>();
     public  void  RegistMovieEvent( int  frame, delegateMovieEvent delEvent)
     {
         if  (!dMovieEvents.ContainsKey(frame))
         {
             dMovieEvents.Add(frame,  new  List<delegateMovieEvent>());
         }
         dMovieEvents[frame].Add(delEvent);
     }
     public  void  UnregistMovieEvent( int  frame, delegateMovieEvent delEvent)
     {
         if  (!dMovieEvents.ContainsKey(frame))
         {
             return ;
         }
         if  (dMovieEvents[frame].Contains(delEvent))
         {
             dMovieEvents[frame].Remove(delEvent);
         }
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值