|
帧动画显示
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; //使自身可被调用 } }
|