【学习手记】U3D实战之DontTouchWhite(三)

来源:互联网 发布:免费x站 最新域名网站 编辑:程序博客网 时间:2024/06/03 05:15

      在上节中,要生成色块并将其放在正确的位置,这个功能我们放在Blocks脚本中去做,让每种颜色的色块上面都挂有这个脚本,用于处理色块自身的逻辑。其中设置位置的方法如下

 //设置色块的随机位置    public void SetPosition(int rowIndex, int columnIndex)    {        //保存当前色块的索引        this.rowIndex = rowIndex;        this.columnIndex = columnIndex;        gameObject.transform.position = new Vector3(xOffset + columnIndex * 1.5f,            yOffset + rowIndex * 2.8f);    }
      完成所有的初始化功能后,就是游戏和玩家互动的时候到了。当玩家点中一个色块,那么就会获得相应的分数并使所有色块往下移动一行。色块被鼠标点到的情况如下:

    void OnMouseDown()    {        Debug.Log(this);        //传入当前选中的色块        gameController.Select(this);    }
然后处理被点中的情况:

  public void Select(Blocks block) {         //播放声音        audio.Play();        //获得分数        score += block.GetComponent<Blocks>().blockScore;        //找到所有的色块        for (int i = 0; i < allBlocks.Count; i++)        {            Blocks b = allBlocks[i] as Blocks;            //往下移动色块            b.MoveDown();            //移出视野后就销毁这个色块            if(b.rowIndex==-1){                //从数组中移去色块                allBlocks.RemoveAt(i);                Destroy(b.gameObject);                //保证索引正常                i--;            }        }        //在最上面添加一个新的色块        AddBlock(3);    }   
        本游戏中,只有玩家点击色块才会发出声音,只有一个声音,将其挂在GameController上面,用audio.Play()播放即可。对于每一个色块,都有相应的分值。可以将分值作为公共的属性,在属性面板赋值。如下是蓝色色块的情况,它的分值有两分:


移动色块到下一行的方法,同样在Blocks脚本中定义,很简单,它只是调用了自身的SetPosition方法:

    //往下移一行色块    public void MoveDown() {        SetPosition(rowIndex - 1, columnIndex);    }
分数的显示统一在UI脚本中去做,代码如下:

using UnityEngine;using System.Collections;public class UI : MonoBehaviour {//这个脚本用来处理分数的显示      void OnGUI() {          if (GameController.isShowScore) {                 //分数样式                GUIStyle style=new GUIStyle();                style.normal.textColor = Color.black;                style.fontSize = 15;                style.fontStyle = FontStyle.Bold;                    GUI.Label(new Rect(63, 32, 70, 35), "Score: " + GameController.score,style);          }    }}
      今天就先到这里吧,很简单不是吗?这个游戏的逻辑算是比较简单了,和上个CandyCrush比起来是小巫见大巫了。谢谢大家的阅读,下篇文章再见吧!

0 0
原创粉丝点击