【学习手记】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
- 【学习手记】U3D实战之DontTouchWhite(三)
- 【学习手记】U3D实战之DontTouchWhite(一)
- 【学习手记】U3D实战之DontTouchWhite(二)
- 【学习手记】U3D实战之DontTouchWhite(四)
- 我的u3d学习之旅三
- RESTful GeoWeb学习手记(五):GeoRSS介绍之三
- RoR学习手记(三)
- RoR学习手记(三)
- 实战手记之高级NAT(Checkpoint)
- (转)U3D DrawCall优化手记
- ADO.NET学习手记(三)
- Think in java 学习手记(三)
- 错误隐藏学习手记(三)
- 【perl】学习手记(三)--数组
- U3D DrawCall优化手记
- U3D DrawCall优化手记
- GeoServer学习手记(六):Servlet及HTTP派发过程之三
- GeoServer学习手记(六):Servlet及HTTP派发过程之三
- 吴超大数据高薪就业班二期和三期(官方培训费11000)
- 吴超大数据高薪就业班二期和三期(官方培训费11000)
- 全排列算法
- Grunt 自动化部署之css、image、javascript、html压缩Gruntfile.js配置
- 吴超大数据高薪就业班二期和三期(官方培训费11000)
- 【学习手记】U3D实战之DontTouchWhite(三)
- 访问网络图片笔记
- 吴超大数据高薪就业班二期和三期(官方培训费11000)
- Android ViewStub的基本使用
- 吴超大数据高薪就业班二期和三期(官方培训费11000)
- 利用xcconfig来控制Xcode工程
- 上海C++游戏服务器群活动PPT下载
- C#多线程 为多核处理器而生的多线程方法Parallel.For和Parallel.ForEach
- 浅谈C/C++排序函数中cmp()比较函数的写法