Unity3D_(游戏)卡牌01_启动屏界面
卡牌2D游戏展示
(游戏代码放到 卡牌04_游戏界面 文章最后面~)
游戏项目已托管到github上(里面有个32bit可执行文件) 传送门
规则
开始游戏每张卡牌初始翻开展示 展示几秒后卡牌扣下。
点击第一个卡牌,翻开、记录。 点击第二个卡牌, 如果不匹配,等待1秒后两个都重置为扣下 如果匹配,则变暗,禁止再次点击 所有卡牌成功配对
右上角显示时钟倒计时 时间结束,游戏失败
不同主题关卡不同,远不止15关~
启动屏 主菜单界面选择主题,不同主题对应不同图片素材。点击后进入选关界面 选关界面 鼠标进入某个具体关卡按钮上,底下对应显示这个关卡的描述信息 当关卡很多时,通过滑动屏幕,来切换多页显示 游戏界面 随机生成偶数对图片。两两配对 全部配对成功,游戏结束 核心算法:先后翻开两张卡牌,判断两个卡牌id相同即可 时间计时。剩余时间越多在关卡中标识星星越多(0-3个) 数据结构设计 每个关卡在指定图片素材中随机、在全体图片素材中随机 记录的保存 记录最高的关卡编号。只有通过当前关卡才解锁下一关卡 每关根据完成比赛时间长短,显示不同的星级。
卡牌01_启动屏界面 传送门
卡牌02_主菜单界面 传送门
卡牌03_选关界面 传送门
卡牌04_游戏界面 传送门
启动屏界面
5s后start场景跳转到MainMenu场景
(0.5s闪烁一次!)
点击start场景(按任意键),从start场景跳转到MainMenu场景
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class Scene_Start : MonoBehaviour { float _timer; GameObject anyKeyObj; // Use this for initialization void Start () { _timer = 0; anyKeyObj = GameObject.Find("anykeyTxt"); } // Update is called once per frame void Update () { _timer += Time.deltaTime; if (_timer % 0.5f > 0.25f) { anyKeyObj.SetActive(true); } else { anyKeyObj.SetActive(false); } if (_timer>5||Input.anyKeyDown) { GoToMainMenu(); } } void GoToMainMenu() { SceneManager.LoadScene("MainMenu"); } }
实现过程
创建四个场景,并保存到工程项目中
创建游戏屏幕分辨率
Canvas的分辨率及多屏幕适配
添加background(Image)、logo(Image)、name(text)、anykeyTxt(txt)
创建一个空对象,挂载脚本
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class Scene_Start : MonoBehaviour { float _timer; GameObject anyKeyObj; // Use this for initialization void Start () { _timer = 0; anyKeyObj = GameObject.Find("anykeyTxt"); } // Update is called once per frame void Update () { _timer += Time.deltaTime; if (_timer % 0.5f > 0.25f) { anyKeyObj.SetActive(true); } else { anyKeyObj.SetActive(false); } if (_timer>5||Input.anyKeyDown) { //任意键按下,则直接跳转主菜单场景 GoToMainMenu(); } } void GoToMainMenu() { SceneManager.LoadScene("MainMenu"); } }
anykeyTxt文字闪烁效果
文字状态可见
anyKeyObj.SetActive(true);
文字状态不可见
anyKeyObj.SetActive(false);
添加文字闪烁
if (_timer % 0.5f > 0.25f) { anyKeyObj.SetActive(true); } else { anyKeyObj.SetActive(false); }
5s钟后或任意键按下,则直接跳转到MainMenu场景
if (_timer>5||Input.anyKeyDown) { GoToMainMenu(); } void GoToMainMenu() { SceneManager.LoadScene("MainMenu"); }
(如需转载学习,请标明出处)