转自:
脱莫柔Unity3D学习之旅
读取Resources文件夹下的序列帧,两种播放方式。
- using UnityEngine;
- using System.Collections;
- public class anim_xuanwo: MonoBehaviour {
- public string movieName = "YouFolderName"
- //动画数组
- private Object[] anim;
- //帧序列
- private int nowFram;
- //动画帧的总数
- private int mFrameCount;
- //限制一秒多少帧
- private float fps = 15;
- //限制帧的时间
- private float time = 0;
- void Start(){
- if(anim == null){
- anim = Resources.LoadAll(movieName);
- mFrameCount = anim.Length;
- nowFram = 0;
- time = 0;
- }
- }
- void OnGUI() {
- //绘制帧动画
- DrawAnimation();
- }
- void DrawAnimation(Object[] img){
- //方法①:
- this.renderer.material.mainTexture = (Texture)anim[nowFram];
- //方法②:
- GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), (Texture)anim[nowFram], ScaleMode.ScaleAndCrop);
- //计算限制帧时间
- time += Time.deltaTime;
- //超过限制帧则切换图片
- if(time >= 1.0 / fps){
- //帧序列切换
- nowFram++;
- //限制帧清空
- time = 0;
- //超过帧动画总数从第0帧开始
- if(nowFram >= mFrameCount)
- {
- nowFram = 0;
- }
- }
- }
- }
方法①:贴图动画
使用这个方法是改变物体上的材质贴图实现序列帧动画功能,该物体必须有材质方能使用。
方法②:GUI帧动画
这个方法是通过GUI方式播放序列帧动画功能。
全屏自适应屏幕全靠第三个参数-ScaleMode。
下面列举ScaleMode的几个类型作用:
![](https://img-my.csdn.net/uploads/201301/13/1358013147_9340.png)
![](https://img-my.csdn.net/uploads/201301/13/1358013050_5722.png)
![](https://img-my.csdn.net/uploads/201301/13/1358013114_8340.png)