帧动画显示
1、一张图片上有若干帧组成动画
通过修改其材质下的偏移量。比如Flappy Bird的例子,一幅图片中有三帧不同的动画
public int frameIndex = 0; //帧数 public int frameRate = 10; //拍打频率 public float timer; timer += Time.deltaTime; if (timer >= 1.0f / frameRate) { timer -= 1.0f / frameRate;
frameIndex++; frameIndex %= 3; this.GetComponent<Renderer>().material.SetTextureOffset("_MainTex",new Vector2(0.333333f*frameIndex,0)); }
offset:显示框的偏移量
Tiling:显示框的所放量
2、若干张图片组成帧动画
1) 比如飞机大战中的两张图片组成飞机在飞行的动画,然后初始化数组,就是直接拖进去即可。
public float frameCount = 10; //每秒10帧 public float time = 0; public Sprite[] sprites; void Update() { time += Time.deltaTime; int frameIndex = time/(1.0f/frameCount); //转化成int类型 int frame = frameIndex%2; this.GetComponent<SpriteRenderer>().sprite = sprites[frame]; }
2)合金弹头(很多张) public float frameRate = 10; //每秒10帧图片 public float timeInterval = 0; //时间间隔,就是每轮动画完毕之后,循环下次的时间间隔 public int time = 0; public Sprite[] sprites; public int frameIndex = 0; private int length = 0; //也就是图片的数量 void start() { timeInterval = 1.0f/frameRate; // 得到每一帧的时间间隔 length = sprites.length; } void Update() { time += Time.deltaTime; if(time > timeInterval) //播放下一帧 { time -= timeInterval; //让计时器减去一个周期的时间 frameIndex++; //播放下一帧 frameIndex %= length; //判断是否到达最大帧数 this.GetComponent<SpriteRenderer>().sprite = sprites[frameIndex]; } }
单例模式的使用
单例模式是一种设计模式,即保证系统中只有一个类的实例,且该实例易于外界访问,从而方便对对象的访问,可以控制资源使用,个人理解类似于大家在一块黑板上讨论东西,不关心参与讨论的对象,单例就相当于黑板。 游戏中我一般在一个场景中设置一个GameController类为单例模式,其中提供若干辅助操作对象的方法,如控制参数设置,提供计算方法等,也会设置一个单例的声音管理器专门管理声音的统一播放。Unity中我这样设置单例。 public class GameManager : MonoBehaviour { private static GameManager _instance; public static GameManager Instance //此段有时省略 { get { return _instance; } } void Awake() { _instance = this; //使自身可被调用 } }