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");
        }
}
Scene_Start.cs

 

 

实现过程

 

  创建四个场景,并保存到工程项目中

 

  创建游戏屏幕分辨率

 

   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");
    }
}
Scene_Start.cs

 

 

  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");
        }

 

posted @ 2018-08-19 00:21  Cynical丶Gary  阅读(2469)  评论(0编辑  收藏  举报