网站建设总结 优帮云,如何开一个自己的网站,wordpress 标签 中文乱码,网站上传格式文章目录 前言开始项目开始一、方块网格生成二、方块交换三、添加交换的动画效果四、水平消除检测五、垂直消除检测六、完善删除功能七、效果优化#xff08;移动方块后再进行消除检测#xff09;八、方块下落十、方块填充十一、后续 源码参考完结 前言 
欢迎来到经典消消乐游… 文章目录 前言开始项目开始一、方块网格生成二、方块交换三、添加交换的动画效果四、水平消除检测五、垂直消除检测六、完善删除功能七、效果优化移动方块后再进行消除检测八、方块下落十、方块填充十一、后续 源码参考完结 前言 
欢迎来到经典消消乐游戏的复刻版在这个令人上瘾的游戏中您将体验到无穷的挑战和欢乐。 
消消乐是一款经典的益智游戏旨在通过消除相同的方块来获得高分。您需要在棋盘上寻找相同颜色或形状的方块并将它们消除以获得积分。随着游戏的进行难度也会逐渐增加需要您的观察力、反应能力和策略思维。 
我们的团队致力于为您呈现一款精心制作的复刻版本在保留经典玩法的同时还增加了一些全新的特色玩法和关卡设计。您将享受到华丽的图形效果、各种有趣的道具和奖励以及丰富多样的关卡挑战。 
挑战自我突破极限挖掘隐藏在每个关卡背后的秘密。消除方块释放您内心的压力让愉悦的感觉充满您的每一天 
感谢您选择我们的游戏并希望您在这个充满乐趣和回忆的消消乐世界中度过美好的时光。开始您的消除之旅吧 
祝您玩得愉快 
注意此版本的消消乐游戏仅供娱乐和休闲目的请勿用于商业用途。 
先来看看实现的最终效果  
开始项目 
百度盘链接https://pan.baidu.com/s/12QX7_Jwmc1AITpHYrgfwFQ 提取码5uvj 
开始 
一、方块网格生成 
新增Block方块脚本 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//方块脚本
public class Block : MonoBehaviour
{public int RowIndex;//行位置public int ColIndex;//列位置public void Init(int row, int col){this.RowIndex  row;this.ColIndex  col;}void Start(){}//根据行列下标设置方块的相对位置public void ResetPosition(){transform.localPosition  new Vector3(ColIndex * 88, -RowIndex * 88, 0);}
}新增GameUI 脚本 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GameUI : MonoBehaviour
{public Transform nodeTf;public int RowCount  7;//行数public int ColCount  8;//列数public Block[,] BlockArr;//存储消除方块的二维数组void Start(){InitGrid();}// 初始化网格public void InitGrid(){BlockArr  new Block[RowCount, ColCount];//构建二维数组for (int row  0; row  RowCount; row)for (int col  0; col  ColCount; col){Block b  CreateRandomBlock();b.Init(row, col);b.ResetPosition();BlockArr[row, col]  b;}}public Block CreateRandomBlock(){int ran  Random.Range(1, 5);GameObject obj  Instantiate(Resources.Load(Block/block  ran.ToString()), nodeTf) as GameObject;return obj.AddComponentBlock();}
}挂载脚本  
效果  
二、方块交换 
修改GameUI新增交换方法 
public Block[,] BlockArr;//存储消除方块的二维数组
public ListBlock SelectBlockArr;//存储选中方块的集合
public static GameUI Instance;
void Awake()
{Instance  this;SelectBlockArr  new ListBlock();
}public void SelectBlock(Block b)
{//已经选中移除if (SelectBlockArr.Contains(b)){SelectBlockArr.Remove(b);return;}//添加到选中集合SelectBlockArr.Add(b);if (SelectBlockArr.Count  2){//选中两个 方块 交换//相邻的才能交换if ((Mathf.Abs(SelectBlockArr[0].RowIndex - SelectBlockArr[1].RowIndex)  Mathf.Abs(SelectBlockArr[0].ColIndex - SelectBlockArr[1].ColIndex))  1){SwapBlock(SelectBlockArr[0], SelectBlockArr[1]);}SelectBlockArr.Clear();}}public void SwapBlock(Block b1, Block b2)
{//交换数组位置BlockArr[b1.RowIndex, b1.ColIndex]  b2;BlockArr[b2.RowIndex, b2.ColIndex]  b1;//交换下标int tempRowIndex  b1.RowIndex;int tempColIndex  b1.ColIndex;b1.RowIndex  b2.RowIndex;b1.ColIndex  b2.ColIndex;b2.RowIndex  tempRowIndex;b2.ColIndex  tempColIndex;//交换位置b1.ResetPosition();b2.ResetPosition();
}Block脚本添加点击事件调用 
using UnityEngine.EventSystems;
public class Block : MonoBehaviour,IPointerClickHandler{//点击public void OnPointerClick(PointerEventData eventData){GameUI.Instance.SelectBlock(this);}
}效果  
三、添加交换的动画效果 
引入DOTween修改Block脚本 
//根据行列下标设置方块的相对位置
public void ResetPosition()
{// transform.localPosition  new Vector3(ColIndex * 88, -RowIndex * 88, 0);transform.DOLocalMove(new Vector3(ColIndex * 88,-RowIndex * 88,0),0.25f);
}修改GameUI脚本 
public void SelectBlock(Block b)
{//已经选中移除if (SelectBlockArr.Contains(b)){SelectBlockArr.Remove(b);b.transform.DOScale(1f, 0.25f);return;}//添加到选中集合SelectBlockArr.Add(b);if (SelectBlockArr.Count  2){//选中两个 方块 交换//相邻的才能交换if ((Mathf.Abs(SelectBlockArr[0].RowIndex - SelectBlockArr[1].RowIndex)  Mathf.Abs(SelectBlockArr[0].ColIndex - SelectBlockArr[1].ColIndex))  1){SwapBlock(SelectBlockArr[0], SelectBlockArr[1]);}SelectBlockArr[0].transform.DOScale(1, 0.25f);SelectBlockArr[1].transform.DOScale(1, 0.25f);SelectBlockArr.Clear();}else{b.transform.DOScale(1.2f, 0.25f);}
}效果  
四、水平消除检测 
修改GameUI代码 
public ListBlock DelBlockArr;//存储将要消除的方块
void Awake()
{DelBlockArr  new ListBlock();
}public void SelectBlock(Block b)
{//。。。//交换SwapBlock(SelectBlockArr[0], SelectBlockArr[1]);//检测水平方块CheckDelHorizontal();//有删除的方块if (HasDelBlock()){//删除DelBlockByArr();}//。。。}//检查水平的方块是否满足消除消除条件
public void CheckDelHorizontal()
{//遍历每一行for (int row  0; row  RowCount; row){//存储每一行第一列方块的名称string preName  BlockArr[row, 0].gameObject.name;int count  0;//方块名称相同个数的计数值//从第二列开始遍历for (int col  1; col  ColCount; col){Block b  BlockArr[row, col];if (b.gameObject.name  preName){//计数加一count;}else{// 判断计数是否大于等于2if (count  2){// 将名称相同的方块添加到要消除的集合中for (int j  0; j  count; j){// 判断是否已经存在消除队列不存在再添加到集合Block delBlock  BlockArr[row, col - 1 - j];if (DelBlockArr.IndexOf(delBlock)  -1){DelBlockArr.Add(delBlock);}}}// 记录当前方块名称preName  b.gameObject.name;// 计数归0count  0;}}//判断一行遍历完后个数是否满足消除情况if (count  2){for(int j  0; j  count; j){//判断是否已经存在消除队列不存在再添到集合Block delBlock  BlockArr[row, ColCount - 1 - j];if (DelBlockArr.IndexOf(delBlock)  -1){DelBlockArr.Add(delBlock);}}}}
}//是否有消除的方块
public bool HasDelBlock()
{return DelBlockArr.Count  0;
}//消除Del集合中的方块
public void DelBlockByArr()
{for (int i  DelBlockArr.Count - 1; i  0; i--){Block b  DelBlockArr[i];//置空BlockArr[b.RowIndex, b.ColIndex]  null;//删除b.Delete();}//清空DelBlockArr.Clear();
}Block新增删除方法 
//删除
public void Delete()
{gameObject.GetComponentImage().color  Color.red;
}效果  
五、垂直消除检测 
//垂直检测
public void CheckDelVertical()
{//遍历每一行for (int col  0; col  ColCount; col){string preName  BlockArr[0, col].gameObject.name;int count  0;//方块名称相同个数的计数值//从第二列开始遍历for (int row  1; row  RowCount; row){Block b  BlockArr[row, col];if (b.gameObject.name  preName){//计数加一count;}else{// 判断计数是否大于等于2if (count  2){// 将名称相同的方块添加到要消除的集合中for (int j  0; j  count; j){// 判断是否已经存在消除队列不存在再添加到集合Block delBlock  BlockArr[row - 1 - j, col];if (DelBlockArr.IndexOf(delBlock)  -1){DelBlockArr.Add(delBlock);}}}// 记录当前方块名称preName  b.gameObject.name;// 计数归0count  0;}}//判断一行遍历完后个数是否满足消除情况if (count  2){for(int j  0; j  count; j){//判断是否已经存在消除队列不存在再添到集合Block delBlock  BlockArr[RowCount- 1 - j, col];if (DelBlockArr.IndexOf(delBlock)  -1){DelBlockArr.Add(delBlock);}}}}
}效果  
六、完善删除功能 
修改Block代码 
//删除
public void Delete()
{// gameObject.GetComponentImage().color  Color.red;Destroy(gameObject);//生成消除特效GameObject effect  Instantiate(Resources.Load(del)) as GameObject;effect.transform.position  transform.position;Destroy(effect, 1);
}效果  
七、效果优化移动方块后再进行消除检测 
修改Block 
//根据行列下标设置方块的相对位置
public Tween ResetPosition()
{// transform.localPosition  new Vector3(ColIndex * 88, -RowIndex * 88, 0);return transform.DOLocalMove(new Vector3(ColIndex * 88, -RowIndex * 88, 0), 0.25f);
}修改GameUI 
public void SelectBlock(Block b)
{//。。。//交换SwapBlock(SelectBlockArr[0], SelectBlockArr[1]);//动画序列Sequence seq  DOTween.Sequence();seq.Insert(0, SelectBlockArr[0].ResetPosition());seq.Insert(0, SelectBlockArr[1].ResetPosition());seq.AppendCallback(delegate (){//检测水平方块CheckDelHorizontal();CheckDelVertical();//有删除的方块if (HasDelBlock()){//删除DelBlockByArr();}});//。。。
}public void SwapBlock(Block b1, Block b2)
{//。。。//交换位置// b1.ResetPosition();// b2.ResetPosition();
}效果  
八、方块下落 
修改GameUI 
//方块下落
public void DropBlock()
{//从倒数第二行开始遍历for (int row  RowCount - 2; row  0; row--){for (int col  0; col  ColCount; col){//不为null的方块才能下落Block b  BlockArr[row, col];if (b ! null) DropBlock(b);}}
}public void DropBlock(Block b)
{//获得当前方块下方的下标int rowIndex  b.RowIndex  1;int colIndex  b.ColIndex;if (rowIndex  RowCount - 1){//超出下标b.ResetPosition();//移动return;}Block next_block  BlockArr[rowIndex, colIndex];if (next_block ! null){//下方有方块不能再下落b.ResetPosition();return;}else{//下方没有方块与null方块进行交换BlockArr[b.RowIndex, b.ColIndex]  null;b.RowIndex  rowIndex;BlockArr[b.RowIndex, b.ColIndex]  b;//检测是否继续下落DropBlock(b);}
}在删除方块后调用运行效果  
十、方块填充 
GameUI新增填充方块方法 
//填充方块
public void FillEmptyBlock()
{Sequence seq  DOTween.Sequence();for (int row  0; row  RowCount; row){for (int col  0; col  ColCount; col){Block b  BlockArr[row, col];if (b  null){b  CreateRandomBlock();b.Init(row, col);BlockArr[row, col]  b;b.transform.localPosition  new Vector3(col * 88, 88, 0);seq.Insert(0.25f, b.ResetPosition());}}}seq.AppendCallback(delegate (){//继续检测是否满足消除条件//检测水平方块CheckDelHorizontal();//检测垂直方块CheckDelVertical();//有删除的方块if (HasDelBlock()){//删除DelBlockByArr();//检测下落DropBlock();//填充FillEmptyBlock();}});
}在检测下落后调用该方法运行效果  
十一、后续 
后续可以加入计分规则关卡选择功能攻击图标合成对右边的美少女造成伤害五角星给我们自己加盾药品给我们回血能量球合成积攒攻击力增加后续攻击、盾或药品的数值每次使用能量清零每过几个回合美少女会对我们发起攻击通关会解锁该美少女或者获取图集满足爱的收集玩家有玩下去的欲望加入金币功能每次通关可以获取勾起玩家重复游玩关卡的欲望金币可以用于升级主角比如提升基础攻击力、血量等制作排行版本功能可以统计游玩时间分数关卡数解锁美少女图集数金币数进行排行 
后续大家可以自行扩展这里就不过多赘述了。至于后续是否继续完善开发就看大家想不想看了。 
源码 
要啥源码好好看好好学! 
参考 
【视频】https://www.bilibili.com/video/BV1ST4y1y7Jc 
完结 
赠人玫瑰手有余香如果文章内容对你有所帮助请不要吝啬你的点赞评论和关注以便我第一时间收到反馈你的每一次支持都是我不断创作的最大动力。点赞越多更新越快哦当然如果你发现了文章中存在错误或者有更好的解决方法也欢迎评论私信告诉我哦 
好了我是向宇https://xiangyu.blog.csdn.net 
一位在小公司默默奋斗的开发者出于兴趣爱好于是最近才开始自习unity。如果你遇到任何问题也欢迎你评论私信找我 虽然有些问题我可能也不一定会但是我会查阅各方资料争取给出最好的建议希望可以帮助更多想学编程的人共勉~  文章转载自: http://www.morning.jfjpn.cn.gov.cn.jfjpn.cn http://www.morning.zlhzd.cn.gov.cn.zlhzd.cn http://www.morning.qflwp.cn.gov.cn.qflwp.cn http://www.morning.jxtbr.cn.gov.cn.jxtbr.cn http://www.morning.jfbbq.cn.gov.cn.jfbbq.cn http://www.morning.qhmql.cn.gov.cn.qhmql.cn http://www.morning.fsnhz.cn.gov.cn.fsnhz.cn http://www.morning.dbddm.cn.gov.cn.dbddm.cn http://www.morning.lkxzb.cn.gov.cn.lkxzb.cn http://www.morning.bpncd.cn.gov.cn.bpncd.cn http://www.morning.drcnf.cn.gov.cn.drcnf.cn http://www.morning.jpfpc.cn.gov.cn.jpfpc.cn http://www.morning.mrttc.cn.gov.cn.mrttc.cn http://www.morning.cgdyx.cn.gov.cn.cgdyx.cn http://www.morning.51meihou.cn.gov.cn.51meihou.cn http://www.morning.spkw.cn.gov.cn.spkw.cn http://www.morning.qdlnw.cn.gov.cn.qdlnw.cn http://www.morning.jwdys.cn.gov.cn.jwdys.cn http://www.morning.ghfrb.cn.gov.cn.ghfrb.cn http://www.morning.nwgkk.cn.gov.cn.nwgkk.cn http://www.morning.mwjwy.cn.gov.cn.mwjwy.cn http://www.morning.zqfz.cn.gov.cn.zqfz.cn http://www.morning.hlnrj.cn.gov.cn.hlnrj.cn http://www.morning.zympx.cn.gov.cn.zympx.cn http://www.morning.hwljx.cn.gov.cn.hwljx.cn http://www.morning.pxwzk.cn.gov.cn.pxwzk.cn http://www.morning.kfhm.cn.gov.cn.kfhm.cn http://www.morning.tfzjl.cn.gov.cn.tfzjl.cn http://www.morning.rwyd.cn.gov.cn.rwyd.cn http://www.morning.sgmgz.cn.gov.cn.sgmgz.cn http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn http://www.morning.lthgy.cn.gov.cn.lthgy.cn http://www.morning.wptdg.cn.gov.cn.wptdg.cn http://www.morning.nwczt.cn.gov.cn.nwczt.cn http://www.morning.ygqjn.cn.gov.cn.ygqjn.cn http://www.morning.wpxfk.cn.gov.cn.wpxfk.cn http://www.morning.bbgr.cn.gov.cn.bbgr.cn http://www.morning.ltypx.cn.gov.cn.ltypx.cn http://www.morning.yqsq.cn.gov.cn.yqsq.cn http://www.morning.tftw.cn.gov.cn.tftw.cn http://www.morning.mtsck.cn.gov.cn.mtsck.cn http://www.morning.hytfz.cn.gov.cn.hytfz.cn http://www.morning.srnth.cn.gov.cn.srnth.cn http://www.morning.jjzjn.cn.gov.cn.jjzjn.cn http://www.morning.cnlmp.cn.gov.cn.cnlmp.cn http://www.morning.kltsn.cn.gov.cn.kltsn.cn http://www.morning.txmlg.cn.gov.cn.txmlg.cn http://www.morning.jpbpc.cn.gov.cn.jpbpc.cn http://www.morning.jyknk.cn.gov.cn.jyknk.cn http://www.morning.tqldj.cn.gov.cn.tqldj.cn http://www.morning.pigcamp.com.gov.cn.pigcamp.com http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn http://www.morning.kzcfr.cn.gov.cn.kzcfr.cn http://www.morning.cmhkt.cn.gov.cn.cmhkt.cn http://www.morning.ntqqm.cn.gov.cn.ntqqm.cn http://www.morning.ahlart.com.gov.cn.ahlart.com http://www.morning.pqrhb.cn.gov.cn.pqrhb.cn http://www.morning.rnpt.cn.gov.cn.rnpt.cn http://www.morning.djlxz.cn.gov.cn.djlxz.cn http://www.morning.xqndf.cn.gov.cn.xqndf.cn http://www.morning.kaweilu.com.gov.cn.kaweilu.com http://www.morning.wqrdx.cn.gov.cn.wqrdx.cn http://www.morning.nkhdt.cn.gov.cn.nkhdt.cn http://www.morning.ggxbyhk.cn.gov.cn.ggxbyhk.cn http://www.morning.fthcn.cn.gov.cn.fthcn.cn http://www.morning.jqmmf.cn.gov.cn.jqmmf.cn http://www.morning.mmjqk.cn.gov.cn.mmjqk.cn http://www.morning.rzpkt.cn.gov.cn.rzpkt.cn http://www.morning.mhnr.cn.gov.cn.mhnr.cn http://www.morning.ygth.cn.gov.cn.ygth.cn http://www.morning.lkthj.cn.gov.cn.lkthj.cn http://www.morning.wjhpg.cn.gov.cn.wjhpg.cn http://www.morning.zkqsc.cn.gov.cn.zkqsc.cn http://www.morning.qineryuyin.com.gov.cn.qineryuyin.com http://www.morning.wjhdn.cn.gov.cn.wjhdn.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.qkrz.cn.gov.cn.qkrz.cn http://www.morning.gjssk.cn.gov.cn.gjssk.cn http://www.morning.kksjr.cn.gov.cn.kksjr.cn http://www.morning.skfkx.cn.gov.cn.skfkx.cn