unity3D做的翻纸牌消除游戏
一、功能介绍
1.1场景切换
我们的场景分为3个,一个开始场景,主要负责向其他场景的调转以及游戏的退出。另一个是游戏场景,是游戏的主体部分,实现娱乐功能。还一个是帮助场景,玩家可以在此查看游戏玩法。
T1开始场景
T2游戏场景
T3帮助场景
1.2游戏场景布置
整个游戏场景中分为三个部分,分别为:16个Button、2个Text、16张image、8张Sprite。
1)按钮的功能主要接收玩家的点击,显示下层纸牌,计数,传递匹配名。按钮将以纸牌背面显示。
2)文本的功能是实时显示倒计时以及玩家得分。
3))图片的功能是渲染纸牌,它将以纸牌正面显示。
1.3洗牌
每次游戏纸牌排布循序都将不同,增加游戏的不确定性和可玩性。
1.4点击三次匹配
当玩家翻开三张不同的扑克时,游戏将会自动检查前两张是否匹配,匹配则加分并且消除纸牌;不匹配则将前两张纸牌重新置反。
1.5匹配以及消除
游戏判断纸牌是否为相同的纸牌。将纸牌从游戏场景中消除
1.6总分
弹出游戏面板,并且显示玩家的总分。
二、 实现
2.1场景切换
给每个场景添加按钮,在场景跳转的按钮上添加脚本。使用SceneManager.LoadScene(“string”) 函数可以通过修改string参数实现向不同场景的跳转。
2.2游戏场景布置
1)设置按钮、图片为预制体并用两个数组分别参访。通过排布预制体的方法可以快速布局游戏场景。同时调节按钮的图层高于图片,用于最先显示按钮。
T4
T5
2)设置按钮的source image将按钮的显示图片改为纸牌背面。同时,给按钮添加点击事件:向GameManager脚本传入图片名字和对应按钮,并且把按钮设为不可见、不可点击。
3)使用InvokeRepeating()函数实现每秒减一的功能,并且修改时间的文本,以更新时间。
4)16张图片的作用是渲染纸牌,它将以纸牌正面显示。纸牌由8张sprite用作纸牌正面。修改图片的source image使图片渲染纸牌。渲染纸牌正面所用到的图片用一个数组来存放。
T6
2.3洗牌
首先设置两个数组,一个存放0~15的正序数,另一个存放打乱后的数字作为T5数组渲染T6图片的index.
具体通过使用Random.Range(),函数实现随机取数,然后将取到的数存放到第二个数组中并remove()第一组中相应的内容。
2.4点击三次匹配
首先设置一个showing变量每次点击纸牌时加一,当加到3的时候调用匹配函数。并且重新置1。值得一提的是,在最后一次匹配时判断依据变为匹配数满14并且showing变量为2。其中匹配数为一个整形变量,每成功匹配一对,加二。
2.5匹配和消除
给每个按钮设置对应0~15的标签,用于确定点击的按钮在数组中的位置。通过这个位置访问T6相应位置上图片的名字。每次点击纸牌都将传出对应的名字,并在游戏主脚本中设置一个集合接收。通过比较集合中前两个元素来检查是否匹配。如果匹配成功就将传值的按钮可见性通过GetComponent<>().enable设置为false。并且把被渲染的图片也设置为false。然后再把接收名字和按钮的集合清空。
如果匹配不成过,那么重新把就收到的按钮设为可点击,并且把按钮设为可见,把底层图片设为不可见。
2.7总分
设置一个Panel,并且一开始设为不可见,当倒计时为0时,调节为可见。在Panel上添加得分文本、重来和返回菜单的按钮。
得分文本通过访问游戏的得分数据来显示。给按钮添加场景跳转功能。