2D游戏总结

帧动画显示

   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;     //使自身可被调用
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屠变恶龙之人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值