2D游戏总结

    xiaoxiao2021-03-25  122

    帧动画显示

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

    转载请注明原文地址: https://ju.6miu.com/read-11041.html

    最新回复(0)